From 81eafbf13e90c6a691fd1008a18b6d06b44107c4 Mon Sep 17 00:00:00 2001 From: Mateusz Pusz Date: Tue, 16 May 2023 16:02:10 +0200 Subject: [PATCH] refactor: `convertible_result` renamed to `specs_convertible_result` --- src/core/include/mp_units/quantity_spec.h | 230 ++++++++++--------- test/unit_test/static/quantity_spec_test.cpp | 2 +- 2 files changed, 120 insertions(+), 112 deletions(-) diff --git a/src/core/include/mp_units/quantity_spec.h b/src/core/include/mp_units/quantity_spec.h index 80274eee..d5ca2ae5 100644 --- a/src/core/include/mp_units/quantity_spec.h +++ b/src/core/include/mp_units/quantity_spec.h @@ -538,7 +538,7 @@ template namespace detail { -enum class convertible_result { no, cast, explicit_conversion, yes }; +enum class specs_convertible_result { no, cast, explicit_conversion, yes }; template [[nodiscard]] consteval int get_complexity(Q); @@ -599,7 +599,7 @@ template template struct explode_to_equation_result { Q equation; - convertible_result result; + specs_convertible_result result; }; template @@ -607,7 +607,7 @@ template [[nodiscard]] consteval auto explode_to_equation(Q q) { return explode_to_equation_result{ - Q::_equation_, defines_equation(q) ? convertible_result::yes : convertible_result::explicit_conversion}; + Q::_equation_, defines_equation(q) ? specs_convertible_result::yes : specs_convertible_result::explicit_conversion}; } template @@ -615,15 +615,15 @@ template [[nodiscard]] consteval auto explode_to_equation(power) { constexpr ratio exp = power::exponent; - return explode_to_equation_result{pow(Q::_equation_), defines_equation(Q{}) - ? convertible_result::yes - : convertible_result::explicit_conversion}; + return explode_to_equation_result{ + pow(Q::_equation_), + defines_equation(Q{}) ? specs_convertible_result::yes : specs_convertible_result::explicit_conversion}; } template struct explode_result { Q quantity; - convertible_result result = convertible_result::yes; + specs_convertible_result result = specs_convertible_result::yes; template [[nodiscard]] consteval explode_result common_convertibility_with(explode_to_equation_result res) const @@ -718,66 +718,71 @@ template template -[[nodiscard]] consteval convertible_result are_ingredients_convertible(type_list num_from, - type_list den_from, - type_list num_to, - type_list den_to); +[[nodiscard]] consteval specs_convertible_result are_ingredients_convertible(type_list num_from, + type_list den_from, + type_list num_to, + type_list den_to); template -[[nodiscard]] consteval convertible_result are_ingredients_convertible(type_list<>, type_list, - type_list, - type_list); +[[nodiscard]] consteval specs_convertible_result are_ingredients_convertible(type_list<>, + type_list, + type_list, + type_list); template -[[nodiscard]] consteval convertible_result are_ingredients_convertible(type_list, type_list<>, - type_list, - type_list); +[[nodiscard]] consteval specs_convertible_result are_ingredients_convertible(type_list, + type_list<>, type_list, + type_list); template -[[nodiscard]] consteval convertible_result are_ingredients_convertible(type_list, - type_list, type_list<>, - type_list); +[[nodiscard]] consteval specs_convertible_result are_ingredients_convertible(type_list, + type_list, + type_list<>, type_list); template -[[nodiscard]] consteval convertible_result are_ingredients_convertible(type_list, - type_list, - type_list, type_list<>); +[[nodiscard]] consteval specs_convertible_result are_ingredients_convertible(type_list, + type_list, + type_list, type_list<>); template -[[nodiscard]] consteval convertible_result are_ingredients_convertible(type_list, type_list<>, - type_list, type_list<>); +[[nodiscard]] consteval specs_convertible_result are_ingredients_convertible(type_list, + type_list<>, type_list, + type_list<>); template -[[nodiscard]] consteval convertible_result are_ingredients_convertible(type_list<>, type_list, - type_list<>, type_list); +[[nodiscard]] consteval specs_convertible_result are_ingredients_convertible(type_list<>, + type_list, + type_list<>, type_list); template -[[nodiscard]] consteval convertible_result are_ingredients_convertible(type_list, type_list, - type_list<>, type_list<>); +[[nodiscard]] consteval specs_convertible_result are_ingredients_convertible(type_list, + type_list, type_list<>, + type_list<>); template -[[nodiscard]] consteval convertible_result are_ingredients_convertible(type_list<>, type_list<>, type_list, - type_list); +[[nodiscard]] consteval specs_convertible_result are_ingredients_convertible(type_list<>, type_list<>, + type_list, + type_list); template -[[nodiscard]] consteval convertible_result are_ingredients_convertible(type_list, type_list<>, type_list<>, - type_list<>); +[[nodiscard]] consteval specs_convertible_result are_ingredients_convertible(type_list, type_list<>, + type_list<>, type_list<>); template -[[nodiscard]] consteval convertible_result are_ingredients_convertible(type_list<>, type_list, type_list<>, - type_list<>); +[[nodiscard]] consteval specs_convertible_result are_ingredients_convertible(type_list<>, type_list, + type_list<>, type_list<>); template -[[nodiscard]] consteval convertible_result are_ingredients_convertible(type_list<>, type_list<>, type_list, - type_list<>); +[[nodiscard]] consteval specs_convertible_result are_ingredients_convertible(type_list<>, type_list<>, + type_list, type_list<>); template -[[nodiscard]] consteval convertible_result are_ingredients_convertible(type_list<>, type_list<>, type_list<>, - type_list); +[[nodiscard]] consteval specs_convertible_result are_ingredients_convertible(type_list<>, type_list<>, type_list<>, + type_list); -[[nodiscard]] consteval convertible_result are_ingredients_convertible(type_list<>, type_list<>, type_list<>, - type_list<>); +[[nodiscard]] consteval specs_convertible_result are_ingredients_convertible(type_list<>, type_list<>, type_list<>, + type_list<>); enum class prepend_rest { no, first, second }; @@ -833,8 +838,8 @@ template enum class process_entities { numerators, denominators, from, to }; template -[[nodiscard]] consteval convertible_result process_extracted(NumFrom num_from, DenFrom den_from, NumTo num_to, - DenTo den_to) +[[nodiscard]] consteval specs_convertible_result process_extracted(NumFrom num_from, DenFrom den_from, NumTo num_to, + DenTo den_to) { if constexpr (Entities == process_entities::numerators || Entities == process_entities::denominators) { constexpr auto res = convertible_impl(Ext.from, Ext.to); @@ -880,10 +885,10 @@ template -[[nodiscard]] consteval convertible_result are_ingredients_convertible(type_list num_from, - type_list den_from, - type_list num_to, - type_list den_to) +[[nodiscard]] consteval specs_convertible_result are_ingredients_convertible(type_list num_from, + type_list den_from, + type_list num_to, + type_list den_to) { if constexpr (constexpr auto extN = extract_convertible_quantities(NumFrom{}, NumTo{}); extN.same_dimension) return process_extracted(type_list{}, den_from, @@ -929,14 +934,14 @@ template -[[nodiscard]] consteval convertible_result are_ingredients_convertible(type_list<> num_from, - type_list den_from, - type_list num_to, - type_list) +[[nodiscard]] consteval specs_convertible_result are_ingredients_convertible(type_list<> num_from, + type_list den_from, + type_list num_to, + type_list) { if constexpr (constexpr auto extD = extract_convertible_quantities(DenFrom{}, DenTo{}); extD.same_dimension) return process_extracted(num_from, type_list{}, num_to, @@ -970,14 +975,14 @@ template -[[nodiscard]] consteval convertible_result are_ingredients_convertible(type_list num_from, - type_list<> den_from, - type_list, - type_list den_to) +[[nodiscard]] consteval specs_convertible_result are_ingredients_convertible(type_list num_from, + type_list<> den_from, + type_list, + type_list den_to) { if constexpr (constexpr auto extN = extract_convertible_quantities(NumFrom{}, NumTo{}); extN.same_dimension) return process_extracted(type_list{}, den_from, @@ -1009,15 +1014,15 @@ template -[[nodiscard]] consteval convertible_result are_ingredients_convertible(type_list num_from, - type_list, - type_list<> num_to, - type_list den_to) +[[nodiscard]] consteval specs_convertible_result are_ingredients_convertible(type_list num_from, + type_list, + type_list<> num_to, + type_list den_to) { if constexpr (constexpr auto extD = extract_convertible_quantities(DenFrom{}, DenTo{}); extD.same_dimension) return process_extracted(num_from, type_list{}, num_to, @@ -1049,15 +1054,15 @@ template -[[nodiscard]] consteval convertible_result are_ingredients_convertible(type_list, - type_list den_from, - type_list num_to, - type_list<> den_to) +[[nodiscard]] consteval specs_convertible_result are_ingredients_convertible(type_list, + type_list den_from, + type_list num_to, + type_list<> den_to) { if constexpr (constexpr auto extN = extract_convertible_quantities(NumFrom{}, NumTo{}); extN.same_dimension) return process_extracted(type_list{}, den_from, @@ -1089,13 +1094,14 @@ template -[[nodiscard]] consteval convertible_result are_ingredients_convertible(type_list, - type_list<> den_from, - type_list, type_list<> den_to) +[[nodiscard]] consteval specs_convertible_result are_ingredients_convertible(type_list, + type_list<> den_from, + type_list, + type_list<> den_to) { if constexpr (constexpr auto ext = extract_convertible_quantities(NumFrom{}, NumTo{}); ext.same_dimension) { return process_extracted(type_list{}, den_from, @@ -1116,13 +1122,14 @@ template -[[nodiscard]] consteval convertible_result are_ingredients_convertible(type_list<> num_from, - type_list, - type_list<> num_to, type_list) +[[nodiscard]] consteval specs_convertible_result are_ingredients_convertible(type_list<> num_from, + type_list, + type_list<> num_to, + type_list) { if constexpr (constexpr auto ext = extract_convertible_quantities(DenFrom{}, DenTo{}); ext.same_dimension) return process_extracted(num_from, type_list{}, num_to, @@ -1144,77 +1151,78 @@ template -[[nodiscard]] consteval convertible_result are_ingredients_convertible(type_list, type_list, - type_list<>, type_list<>) +[[nodiscard]] consteval specs_convertible_result are_ingredients_convertible(type_list, + type_list, type_list<>, + type_list<>) { if constexpr (((... * map_power(NumsFrom{})) / (... * map_power(DensFrom{}))).dimension == dimension_one) - return convertible_result::yes; + return specs_convertible_result::yes; else - return convertible_result::no; + return specs_convertible_result::no; } template -[[nodiscard]] consteval convertible_result are_ingredients_convertible(type_list<>, type_list<>, type_list, - type_list) +[[nodiscard]] consteval specs_convertible_result are_ingredients_convertible(type_list<>, type_list<>, + type_list, type_list) { if constexpr (((... * map_power(NumsTo{})) / (... * map_power(DensTo{}))).dimension == dimension_one) - return convertible_result::yes; + return specs_convertible_result::yes; else - return convertible_result::no; + return specs_convertible_result::no; } template -[[nodiscard]] consteval convertible_result are_ingredients_convertible(type_list, type_list<>, type_list<>, - type_list<>) +[[nodiscard]] consteval specs_convertible_result are_ingredients_convertible(type_list, type_list<>, + type_list<>, type_list<>) { if constexpr ((... * map_power(NumsFrom{})).dimension == dimension_one) - return convertible_result::yes; + return specs_convertible_result::yes; else - return convertible_result::no; + return specs_convertible_result::no; } template -[[nodiscard]] consteval convertible_result are_ingredients_convertible(type_list<>, type_list, type_list<>, - type_list<>) +[[nodiscard]] consteval specs_convertible_result are_ingredients_convertible(type_list<>, type_list, + type_list<>, type_list<>) { if constexpr ((... * map_power(DensFrom{})).dimension == dimension_one) - return convertible_result::yes; + return specs_convertible_result::yes; else - return convertible_result::no; + return specs_convertible_result::no; } template -[[nodiscard]] consteval convertible_result are_ingredients_convertible(type_list<>, type_list<>, type_list, - type_list<>) +[[nodiscard]] consteval specs_convertible_result are_ingredients_convertible(type_list<>, type_list<>, + type_list, type_list<>) { if constexpr ((... * map_power(NumsTo{})).dimension == dimension_one) - return convertible_result::yes; + return specs_convertible_result::yes; else - return convertible_result::no; + return specs_convertible_result::no; } template -[[nodiscard]] consteval convertible_result are_ingredients_convertible(type_list<>, type_list<>, type_list<>, - type_list) +[[nodiscard]] consteval specs_convertible_result are_ingredients_convertible(type_list<>, type_list<>, type_list<>, + type_list) { if constexpr ((... * map_power(DensFrom{})).dimension == dimension_one) - return convertible_result::yes; + return specs_convertible_result::yes; else - return convertible_result::no; + return specs_convertible_result::no; } -[[nodiscard]] consteval convertible_result are_ingredients_convertible(type_list<>, type_list<>, type_list<>, - type_list<>) +[[nodiscard]] consteval specs_convertible_result are_ingredients_convertible(type_list<>, type_list<>, type_list<>, + type_list<>) { - return convertible_result::yes; + return specs_convertible_result::yes; } template -[[nodiscard]] consteval convertible_result are_ingredients_convertible(From, To) +[[nodiscard]] consteval specs_convertible_result are_ingredients_convertible(From, To) { return are_ingredients_convertible(type_list_sort{}, type_list_sort{}, @@ -1223,7 +1231,7 @@ template -[[nodiscard]] consteval convertible_result are_ingredients_convertible(From, To) +[[nodiscard]] consteval specs_convertible_result are_ingredients_convertible(From, To) { return are_ingredients_convertible(type_list_sort{}, type_list_sort{}, @@ -1231,7 +1239,7 @@ template } template -[[nodiscard]] consteval convertible_result are_ingredients_convertible(From, To) +[[nodiscard]] consteval specs_convertible_result are_ingredients_convertible(From, To) { return are_ingredients_convertible(type_list{}, type_list<>{}, type_list_sort{}, @@ -1239,9 +1247,9 @@ template } template -[[nodiscard]] consteval convertible_result convertible_impl(From from, To to) +[[nodiscard]] consteval specs_convertible_result convertible_impl(From from, To to) { - using enum convertible_result; + using enum specs_convertible_result; if constexpr (From::dimension != To::dimension) return no; @@ -1302,19 +1310,19 @@ template template [[nodiscard]] consteval bool implicitly_convertible(From from, To to) { - return detail::convertible_impl(from, to) == detail::convertible_result::yes; + return detail::convertible_impl(from, to) == detail::specs_convertible_result::yes; } template [[nodiscard]] consteval bool explicitly_convertible(From from, To to) { - return detail::convertible_impl(from, to) >= detail::convertible_result::explicit_conversion; + return detail::convertible_impl(from, to) >= detail::specs_convertible_result::explicit_conversion; } template [[nodiscard]] consteval bool castable(From from, To to) { - return detail::convertible_impl(from, to) >= detail::convertible_result::cast; + return detail::convertible_impl(from, to) >= detail::specs_convertible_result::cast; } namespace detail { diff --git a/test/unit_test/static/quantity_spec_test.cpp b/test/unit_test/static/quantity_spec_test.cpp index 5907819b..6b6c7a97 100644 --- a/test/unit_test/static/quantity_spec_test.cpp +++ b/test/unit_test/static/quantity_spec_test.cpp @@ -457,7 +457,7 @@ static_assert(explode(area * time / period_duration).quant static_assert(explode(pow<2>(length) * time / period_duration).quantity == pow<2>(length) * time / period_duration); -using enum convertible_result; +using enum specs_convertible_result; static_assert(are_ingredients_convertible(length / time, length / time) == yes); static_assert(are_ingredients_convertible(mass * length / time, mass* length / time) == yes);