mirror of
https://github.com/mpusz/mp-units.git
synced 2025-08-01 03:14:29 +02:00
feat: ABI concerns resolved with introduction of u8 strings for symbols
This commit is contained in:
@@ -40,30 +40,30 @@ static_assert(sym1 <= 'b');
|
||||
static_assert(sym1 <= 'c');
|
||||
static_assert(sym1 >= 'b');
|
||||
static_assert(sym1 >= 'a');
|
||||
static_assert(sym1.unicode() == "b");
|
||||
static_assert(sym1.unicode() == u8"b");
|
||||
static_assert(sym1.ascii() == "b");
|
||||
|
||||
constexpr basic_symbol_text sym3("ab");
|
||||
static_assert(sym3.unicode() == "ab");
|
||||
static_assert(sym3.unicode() == u8"ab");
|
||||
static_assert(sym3.ascii() == "ab");
|
||||
|
||||
constexpr basic_fixed_string txt1("bc");
|
||||
constexpr basic_symbol_text sym4(txt1);
|
||||
static_assert(sym4.unicode() == "bc");
|
||||
static_assert(sym4.unicode() == u8"bc");
|
||||
static_assert(sym4.ascii() == "bc");
|
||||
|
||||
constexpr basic_symbol_text sym5("bc", "de");
|
||||
static_assert(sym5.unicode() == "bc");
|
||||
constexpr basic_symbol_text sym5(u8"bc", "de");
|
||||
static_assert(sym5.unicode() == u8"bc");
|
||||
static_assert(sym5.ascii() == "de");
|
||||
|
||||
constexpr basic_fixed_string txt2("de");
|
||||
constexpr basic_symbol_text sym6(sym4.unicode(), txt2);
|
||||
static_assert(sym6.unicode() == "bc");
|
||||
static_assert(sym6.unicode() == u8"bc");
|
||||
static_assert(sym6.ascii() == "de");
|
||||
|
||||
static_assert(sym6 == basic_symbol_text("bc", "de"));
|
||||
static_assert(sym6 != basic_symbol_text("fg", "hi"));
|
||||
static_assert(sym6 != basic_symbol_text("bcd", "ef"));
|
||||
static_assert(sym6 == basic_symbol_text(u8"bc", "de"));
|
||||
static_assert(sym6 != basic_symbol_text(u8"fg", "hi"));
|
||||
static_assert(sym6 != basic_symbol_text(u8"bcd", "ef"));
|
||||
|
||||
static_assert(sym6 < basic_symbol_text("c"));
|
||||
static_assert(sym6 > basic_symbol_text("a"));
|
||||
@@ -75,13 +75,13 @@ static_assert(sym6 >= basic_symbol_text("bc"));
|
||||
static_assert(basic_symbol_text("a") + sym4 == basic_symbol_text("abc"));
|
||||
static_assert(sym4 + basic_symbol_text("f") == basic_symbol_text("bcf"));
|
||||
|
||||
static_assert(basic_symbol_text("a", "f") + sym6 == basic_symbol_text("abc", "fde"));
|
||||
static_assert(sym6 + basic_symbol_text("a", "f") == basic_symbol_text("bca", "def"));
|
||||
static_assert(basic_symbol_text(u8"a", "f") + sym6 == basic_symbol_text(u8"abc", "fde"));
|
||||
static_assert(sym6 + basic_symbol_text(u8"a", "f") == basic_symbol_text(u8"bca", "def"));
|
||||
|
||||
static_assert(basic_symbol_text('a') + sym6 == basic_symbol_text("abc", "ade"));
|
||||
static_assert(sym6 + basic_symbol_text('f') == basic_symbol_text("bcf", "def"));
|
||||
static_assert(basic_symbol_text('a') + sym6 == basic_symbol_text(u8"abc", "ade"));
|
||||
static_assert(sym6 + basic_symbol_text('f') == basic_symbol_text(u8"bcf", "def"));
|
||||
|
||||
static_assert(basic_symbol_text("a") + sym6 == basic_symbol_text("abc", "ade"));
|
||||
static_assert(sym6 + basic_symbol_text("f") == basic_symbol_text("bcf", "def"));
|
||||
static_assert(basic_symbol_text("a") + sym6 == basic_symbol_text(u8"abc", "ade"));
|
||||
static_assert(sym6 + basic_symbol_text("f") == basic_symbol_text(u8"bcf", "def"));
|
||||
|
||||
} // namespace
|
||||
|
@@ -44,7 +44,7 @@ using percent_ = struct percent;
|
||||
inline constexpr struct dim_length_ : base_dimension<"L"> {} dim_length;
|
||||
inline constexpr struct dim_mass_ : base_dimension<"M"> {} dim_mass;
|
||||
inline constexpr struct dim_time_ : base_dimension<"T"> {} dim_time;
|
||||
inline constexpr struct dim_thermodynamic_temperature_ : base_dimension<basic_symbol_text{"Θ", "O"}> {} dim_thermodynamic_temperature;
|
||||
inline constexpr struct dim_thermodynamic_temperature_ : base_dimension<basic_symbol_text{u8"Θ", "O"}> {} dim_thermodynamic_temperature;
|
||||
|
||||
// quantities specification
|
||||
QUANTITY_SPEC_(length, dim_length);
|
||||
@@ -71,11 +71,11 @@ inline constexpr struct newton_ : named_unit<"N", kilogram * metre / square(seco
|
||||
inline constexpr struct pascal_ : named_unit<"Pa", newton / square(metre)> {} pascal;
|
||||
inline constexpr struct joule_ : named_unit<"J", newton * metre> {} joule;
|
||||
inline constexpr struct watt_ : named_unit<"W", joule / second> {} watt;
|
||||
inline constexpr struct degree_Celsius_ : named_unit<basic_symbol_text{"°C", "`C"}, kelvin> {} degree_Celsius;
|
||||
inline constexpr struct degree_Celsius_ : named_unit<basic_symbol_text{u8"°C", "`C"}, kelvin> {} degree_Celsius;
|
||||
|
||||
inline constexpr struct minute_ : named_unit<"min", mag<60> * second> {} minute;
|
||||
inline constexpr struct hour_ : named_unit<"h", mag<60> * minute> {} hour;
|
||||
inline constexpr struct degree_ : named_unit<basic_symbol_text{"°", "deg"}, mag_pi / mag<180> * radian> {} degree;
|
||||
inline constexpr struct degree_ : named_unit<basic_symbol_text{u8"°", "deg"}, mag_pi / mag<180> * radian> {} degree;
|
||||
|
||||
inline constexpr struct yard_ : named_unit<"yd", mag<ratio{9'144, 10'000}> * metre> {} yard;
|
||||
inline constexpr struct mile_ : named_unit<"mi", mag<1760> * yard> {} mile;
|
||||
@@ -84,7 +84,7 @@ 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_ : named_unit<basic_symbol_text{"g₀", "g_0"}, mag<ratio{980'665, 100'000}> * metre / square(second)> {} standard_gravity;
|
||||
inline constexpr struct standard_gravity_ : named_unit<basic_symbol_text{u8"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
|
||||
@@ -194,7 +194,7 @@ 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"});
|
||||
static_assert(standard_gravity.symbol == basic_symbol_text{u8"g₀", "g_0"});
|
||||
|
||||
// prefixed_unit
|
||||
static_assert(is_of_type<kilometre, kilometre_>);
|
||||
@@ -229,7 +229,7 @@ static_assert(si::atto<metre>.symbol == "am");
|
||||
static_assert(si::femto<metre>.symbol == "fm");
|
||||
static_assert(si::pico<metre>.symbol == "pm");
|
||||
static_assert(si::nano<metre>.symbol == "nm");
|
||||
static_assert(si::micro<metre>.symbol == basic_symbol_text{"µm", "um"});
|
||||
static_assert(si::micro<metre>.symbol == basic_symbol_text{u8"µm", "um"});
|
||||
static_assert(si::milli<metre>.symbol == "mm");
|
||||
static_assert(si::centi<metre>.symbol == "cm");
|
||||
static_assert(si::deci<metre>.symbol == "dm");
|
||||
|
Reference in New Issue
Block a user