refactor: constant_unit abstraction removed and replaced with regular named_unit
This commit is contained in:
1 parent
6364fcdf7e
commit
7a730fde58
8 files changed
+66
-144
No files matched your search
@@ -148,7 +148,7 @@ static_assert(Unit<std::remove_const_t<decltype(1 / si::second)>>);
|
||||
static_assert(Unit<std::remove_const_t<decltype(mag<10> * si::second)>>);
|
||||
static_assert(Unit<std::remove_const_t<decltype(square(si::metre))>>);
|
||||
static_assert(Unit<std::remove_const_t<decltype(pow<2>(si::metre))>>);
|
||||
static_assert(Unit<struct si::standard_gravity_unit>);
|
||||
static_assert(Unit<struct si::standard_gravity>);
|
||||
static_assert(Unit<scaled_unit<mag<10>, struct si::second>>);
|
||||
static_assert(Unit<metre_per_second>);
|
||||
static_assert(Unit<derived_unit<struct si::metre, per<struct si::second>>>);
|
||||
@@ -157,7 +157,6 @@ static_assert(!Unit<named_unit<"?", isq::length>>);
|
||||
static_assert(!Unit<named_unit<"?">>);
|
||||
static_assert(!Unit<named_unit<"?", si::metre / si::second>>);
|
||||
static_assert(!Unit<named_unit<"?", si::metre, isq::length>>);
|
||||
static_assert(!Unit<constant_unit<"?", si::metre / si::second>>);
|
||||
static_assert(!Unit<prefixed_unit<"?", mag<10>, si::second>>);
|
||||
static_assert(!Unit<struct isq::dim_length>);
|
||||
static_assert(!Unit<int>);
|
||||
@@ -173,7 +172,7 @@ static_assert(!detail::NamedUnit<std::remove_const_t<decltype(1 / si::second)>>)
|
||||
static_assert(!detail::NamedUnit<std::remove_const_t<decltype(mag<10> * si::second)>>);
|
||||
static_assert(!detail::NamedUnit<std::remove_const_t<decltype(square(si::metre))>>);
|
||||
static_assert(!detail::NamedUnit<std::remove_const_t<decltype(pow<2>(si::metre))>>);
|
||||
static_assert(!detail::NamedUnit<struct si::standard_gravity_unit>);
|
||||
static_assert(detail::NamedUnit<struct si::standard_gravity>);
|
||||
static_assert(!detail::NamedUnit<scaled_unit<mag<10>, struct si::second>>);
|
||||
static_assert(!detail::NamedUnit<metre_per_second>);
|
||||
static_assert(!detail::NamedUnit<derived_unit<struct si::metre, per<struct si::second>>>);
|
||||
@@ -182,7 +181,6 @@ static_assert(!detail::NamedUnit<named_unit<"?", isq::length>>);
|
||||
static_assert(!detail::NamedUnit<named_unit<"?">>);
|
||||
static_assert(!detail::NamedUnit<named_unit<"?", si::metre / si::second>>);
|
||||
static_assert(!detail::NamedUnit<named_unit<"?", si::metre, isq::length>>);
|
||||
static_assert(!detail::NamedUnit<constant_unit<"?", si::metre / si::second>>);
|
||||
static_assert(!detail::NamedUnit<prefixed_unit<"?", mag<10>, si::second>>);
|
||||
static_assert(!detail::NamedUnit<struct isq::dim_length>);
|
||||
static_assert(!detail::NamedUnit<int>);
|
||||
@@ -198,7 +196,7 @@ static_assert(!PrefixableUnit<std::remove_const_t<decltype(1 / si::second)>>);
|
||||
static_assert(!PrefixableUnit<std::remove_const_t<decltype(mag<10> * si::second)>>);
|
||||
static_assert(!PrefixableUnit<std::remove_const_t<decltype(square(si::metre))>>);
|
||||
static_assert(!PrefixableUnit<std::remove_const_t<decltype(pow<2>(si::metre))>>);
|
||||
static_assert(!PrefixableUnit<struct si::standard_gravity_unit>);
|
||||
static_assert(PrefixableUnit<struct si::standard_gravity>);
|
||||
static_assert(!PrefixableUnit<scaled_unit<mag<10>, struct si::second>>);
|
||||
static_assert(!PrefixableUnit<metre_per_second>);
|
||||
static_assert(!PrefixableUnit<derived_unit<struct si::metre, per<struct si::second>>>);
|
||||
@@ -207,7 +205,6 @@ static_assert(!PrefixableUnit<named_unit<"?", isq::length>>);
|
||||
static_assert(!PrefixableUnit<named_unit<"?">>);
|
||||
static_assert(!PrefixableUnit<named_unit<"?", si::metre / si::second>>);
|
||||
static_assert(!PrefixableUnit<named_unit<"?", si::metre, isq::length>>);
|
||||
static_assert(!PrefixableUnit<constant_unit<"?", si::metre / si::second>>);
|
||||
static_assert(!PrefixableUnit<prefixed_unit<"?", mag<10>, si::second>>);
|
||||
static_assert(!PrefixableUnit<struct isq::dim_length>);
|
||||
static_assert(!PrefixableUnit<int>);
|
||||
@@ -223,7 +220,7 @@ static_assert(AssociatedUnit<std::remove_const_t<decltype(1 / si::second)>>);
|
||||
static_assert(AssociatedUnit<std::remove_const_t<decltype(mag<10> * si::second)>>);
|
||||
static_assert(AssociatedUnit<std::remove_const_t<decltype(square(si::metre))>>);
|
||||
static_assert(AssociatedUnit<std::remove_const_t<decltype(pow<2>(si::metre))>>);
|
||||
static_assert(AssociatedUnit<struct si::standard_gravity_unit>);
|
||||
static_assert(AssociatedUnit<struct si::standard_gravity>);
|
||||
static_assert(AssociatedUnit<scaled_unit<mag<10>, struct si::second>>);
|
||||
static_assert(AssociatedUnit<metre_per_second>);
|
||||
static_assert(AssociatedUnit<derived_unit<struct si::metre, per<struct si::second>>>);
|
||||
@@ -232,7 +229,6 @@ static_assert(!AssociatedUnit<named_unit<"?", isq::length>>);
|
||||
static_assert(!AssociatedUnit<named_unit<"?">>);
|
||||
static_assert(!AssociatedUnit<named_unit<"?", si::metre / si::second>>);
|
||||
static_assert(!AssociatedUnit<named_unit<"?", si::metre, isq::length>>);
|
||||
static_assert(!AssociatedUnit<constant_unit<"?", si::metre / si::second>>);
|
||||
static_assert(!AssociatedUnit<prefixed_unit<"?", mag<10>, si::second>>);
|
||||
static_assert(!AssociatedUnit<struct isq::dim_length>);
|
||||
static_assert(!AssociatedUnit<int>);
|
||||
|
||||
@@ -159,9 +159,9 @@ static_assert(unit_symbol(pow<3, 5>(metre)) == "m^(3/5)");
|
||||
static_assert(unit_symbol(pow<1, 2>(metre / second)) == "m^(1/2)/s^(1/2)");
|
||||
|
||||
// Physical constants
|
||||
static_assert(unit_symbol(si2019::speed_of_light_in_vacuum_unit) == "[c]");
|
||||
static_assert(unit_symbol(gram * standard_gravity_unit * si2019::speed_of_light_in_vacuum_unit) == "[c] [g₀] g");
|
||||
static_assert(unit_symbol(gram / standard_gravity_unit) == "g/[g₀]");
|
||||
static_assert(unit_symbol(si2019::speed_of_light_in_vacuum) == "c");
|
||||
static_assert(unit_symbol(gram * standard_gravity * si2019::speed_of_light_in_vacuum) == "c g g₀");
|
||||
static_assert(unit_symbol(gram / standard_gravity) == "g/g₀");
|
||||
|
||||
#endif // __cpp_lib_constexpr_string
|
||||
|
||||
|
||||
@@ -87,8 +87,8 @@ inline constexpr struct kilometre_ : decltype(si::kilo<metre>) {} kilometre;
|
||||
inline constexpr struct kilojoule_ : decltype(si::kilo<joule>) {} kilojoule;
|
||||
|
||||
// physical constant units
|
||||
inline constexpr struct standard_gravity_unit_ : constant_unit<"g", mag<ratio{980'665, 100'000}> * metre / square(second)> {} standard_gravity_unit;
|
||||
inline constexpr struct speed_of_light_in_vacuum_unit_ : constant_unit<"c", mag<299'792'458> * metre / second> {} speed_of_light_in_vacuum_unit;
|
||||
inline constexpr struct standard_gravity_ : named_unit<basic_symbol_text{"g₀", "g_0"}, mag<ratio{980'665, 100'000}> * metre / square(second)> {} standard_gravity;
|
||||
inline constexpr struct speed_of_light_in_vacuum_ : named_unit<"c", mag<299'792'458> * metre / second> {} speed_of_light_in_vacuum;
|
||||
|
||||
// clang-format on
|
||||
|
||||
@@ -190,15 +190,15 @@ static_assert(joule != newton);
|
||||
static_assert(is_of_type<nu_second / nu_second, one_>);
|
||||
|
||||
// constant_unit
|
||||
static_assert(is_of_type<standard_gravity_unit, standard_gravity_unit_>);
|
||||
static_assert(is_of_type<standard_gravity, standard_gravity_>);
|
||||
static_assert(
|
||||
is_of_type<get_canonical_unit(standard_gravity_unit).reference_unit, derived_unit<metre_, per<power<second_, 2>>>>);
|
||||
static_assert(get_canonical_unit(standard_gravity_unit).mag == mag<ratio{980'665, 100'000}>);
|
||||
static_assert(convertible(standard_gravity_unit, standard_gravity_unit));
|
||||
static_assert(convertible(standard_gravity_unit, metre / square(second)));
|
||||
static_assert(standard_gravity_unit == standard_gravity_unit);
|
||||
static_assert(standard_gravity_unit != metre / square(second)); // magnitude is different
|
||||
static_assert(standard_gravity_unit.symbol == "[g]");
|
||||
is_of_type<get_canonical_unit(standard_gravity).reference_unit, derived_unit<metre_, per<power<second_, 2>>>>);
|
||||
static_assert(get_canonical_unit(standard_gravity).mag == mag<ratio{980'665, 100'000}>);
|
||||
static_assert(convertible(standard_gravity, standard_gravity));
|
||||
static_assert(convertible(standard_gravity, metre / square(second)));
|
||||
static_assert(standard_gravity == standard_gravity);
|
||||
static_assert(standard_gravity != metre / square(second)); // magnitude is different
|
||||
static_assert(standard_gravity.symbol == basic_symbol_text{"g₀", "g_0"});
|
||||
|
||||
// prefixed_unit
|
||||
static_assert(is_of_type<kilometre, kilometre_>);
|
||||
@@ -333,15 +333,15 @@ static_assert(is_of_type<one * metre * square(second) / gram, derived_unit<metre
|
||||
static_assert(is_of_type<(metre * square(second) / gram) * one, derived_unit<metre_, power<second_, 2>, per<gram_>>>);
|
||||
static_assert(is_of_type<metre * square(second) / gram * one, derived_unit<metre_, power<second_, 2>, per<gram_>>>);
|
||||
|
||||
static_assert(is_of_type<standard_gravity_unit * gram, derived_unit<standard_gravity_unit_, gram_>>);
|
||||
static_assert(is_of_type<gram * standard_gravity_unit, derived_unit<standard_gravity_unit_, gram_>>);
|
||||
static_assert(is_of_type<standard_gravity_unit / gram, derived_unit<standard_gravity_unit_, per<gram_>>>);
|
||||
static_assert(is_of_type<gram / standard_gravity_unit, derived_unit<gram_, per<standard_gravity_unit_>>>);
|
||||
static_assert(is_of_type<standard_gravity_unit * gram / standard_gravity_unit, gram_>);
|
||||
static_assert(is_of_type<speed_of_light_in_vacuum_unit * gram * standard_gravity_unit,
|
||||
derived_unit<speed_of_light_in_vacuum_unit_, standard_gravity_unit_, gram_>>);
|
||||
static_assert(is_of_type<gram * standard_gravity_unit * speed_of_light_in_vacuum_unit,
|
||||
derived_unit<speed_of_light_in_vacuum_unit_, standard_gravity_unit_, gram_>>);
|
||||
static_assert(is_of_type<standard_gravity * gram, derived_unit<gram_, standard_gravity_>>);
|
||||
static_assert(is_of_type<gram * standard_gravity, derived_unit<gram_, standard_gravity_>>);
|
||||
static_assert(is_of_type<standard_gravity / gram, derived_unit<standard_gravity_, per<gram_>>>);
|
||||
static_assert(is_of_type<gram / standard_gravity, derived_unit<gram_, per<standard_gravity_>>>);
|
||||
static_assert(is_of_type<standard_gravity * gram / standard_gravity, gram_>);
|
||||
static_assert(is_of_type<speed_of_light_in_vacuum * gram * standard_gravity,
|
||||
derived_unit<speed_of_light_in_vacuum_, gram_, standard_gravity_>>);
|
||||
static_assert(is_of_type<gram * standard_gravity * speed_of_light_in_vacuum,
|
||||
derived_unit<speed_of_light_in_vacuum_, gram_, standard_gravity_>>);
|
||||
|
||||
static_assert(std::is_same_v<decltype(1 / second * metre), decltype(metre / second)>);
|
||||
static_assert(std::is_same_v<decltype(metre * (1 / second)), decltype(metre / second)>);
|
||||
@@ -374,11 +374,11 @@ static_assert(
|
||||
is_of_type<get_canonical_unit(1 / pascal).reference_unit, derived_unit<metre_, power<second_, 2>, per<gram_>>>);
|
||||
|
||||
static_assert(
|
||||
is_of_type<get_canonical_unit(standard_gravity_unit).reference_unit, derived_unit<metre_, per<power<second_, 2>>>>);
|
||||
static_assert(get_canonical_unit(standard_gravity_unit).mag == mag<ratio{980'665, 100'000}>);
|
||||
static_assert(is_of_type<get_canonical_unit(standard_gravity_unit* gram).reference_unit,
|
||||
is_of_type<get_canonical_unit(standard_gravity).reference_unit, derived_unit<metre_, per<power<second_, 2>>>>);
|
||||
static_assert(get_canonical_unit(standard_gravity).mag == mag<ratio{980'665, 100'000}>);
|
||||
static_assert(is_of_type<get_canonical_unit(standard_gravity* gram).reference_unit,
|
||||
derived_unit<gram_, metre_, per<power<second_, 2>>>>);
|
||||
static_assert(is_of_type<get_canonical_unit(standard_gravity_unit / speed_of_light_in_vacuum_unit).reference_unit,
|
||||
static_assert(is_of_type<get_canonical_unit(standard_gravity / speed_of_light_in_vacuum).reference_unit,
|
||||
derived_unit<one_, per<second_>>>);
|
||||
|
||||
// operations commutativity
|
||||
@@ -532,7 +532,6 @@ static_assert(is_of_type<common_unit(metre / second, kilometre / hour),
|
||||
scaled_unit<mag<ratio{1, 18}>, derived_unit<metre_, per<second_>>>>);
|
||||
static_assert(is_of_type<common_unit(kilometre, mile), scaled_unit<mag<ratio{8, 125}>, metre_>>);
|
||||
static_assert(is_of_type<common_unit(mile, kilometre), scaled_unit<mag<ratio{8, 125}>, metre_>>);
|
||||
static_assert(
|
||||
is_of_type<common_unit(speed_of_light_in_vacuum_unit, metre / second), derived_unit<metre_, per<second_>>>);
|
||||
static_assert(is_of_type<common_unit(speed_of_light_in_vacuum, metre / second), derived_unit<metre_, per<second_>>>);
|
||||
|
||||
} // namespace
|
||||
Reference in new issue
Block a user