From 15e148381ddd7f0f7650c4f0aa37d2163dd41f95 Mon Sep 17 00:00:00 2001 From: Mateusz Pusz Date: Thu, 26 Dec 2019 10:07:02 +0100 Subject: [PATCH] decimetre and litre added --- src/include/units/physical/si/length.h | 5 +++++ src/include/units/physical/si/volume.h | 7 +++++++ test/unit_test/static/si_test.cpp | 4 ++++ 3 files changed, 16 insertions(+) diff --git a/src/include/units/physical/si/length.h b/src/include/units/physical/si/length.h index 92ecb960..212c57b6 100644 --- a/src/include/units/physical/si/length.h +++ b/src/include/units/physical/si/length.h @@ -31,6 +31,7 @@ namespace units::si { struct metre : named_unit {}; struct millimetre : prefixed_unit {}; struct centimetre : prefixed_unit {}; +struct decimetre : prefixed_unit {}; struct kilometre : prefixed_unit {}; struct dim_length : physical::dim_length {}; @@ -52,6 +53,10 @@ constexpr auto operator"" mm(long double l) { return length(l); } constexpr auto operator"" cm(long double l) { return length(l); } +// dm +constexpr auto operator"" dm(unsigned long long l) { return length(l); } +constexpr auto operator"" dm(long double l) { return length(l); } + // km constexpr auto operator"" km(unsigned long long l) { return length(l); } constexpr auto operator"" km(long double l) { return length(l); } diff --git a/src/include/units/physical/si/volume.h b/src/include/units/physical/si/volume.h index adef97bd..9f220a26 100644 --- a/src/include/units/physical/si/volume.h +++ b/src/include/units/physical/si/volume.h @@ -35,6 +35,9 @@ struct cubic_millimetre : deduced_unit struct cubic_centimetre : deduced_unit {}; struct cubic_kilometre : deduced_unit {}; +struct litre : deduced_unit {}; + + template using volume = quantity; @@ -56,6 +59,10 @@ constexpr auto operator""cub_m(long double l) { return volume(l); } constexpr auto operator""cub_km(long double l) { return volume(l); } +// l +constexpr auto operator""_l(unsigned long long l) { return volume(l); } +constexpr auto operator""_l(long double l) { return volume(l); } + } // namespace literals } // namespace units::si diff --git a/test/unit_test/static/si_test.cpp b/test/unit_test/static/si_test.cpp index de326a95..69205887 100644 --- a/test/unit_test/static/si_test.cpp +++ b/test/unit_test/static/si_test.cpp @@ -53,6 +53,7 @@ using namespace units::si; static_assert(1km == 1000m); static_assert(1m == 100cm); +static_assert(1m == 10dm); static_assert(1m == 1000mm); static_assert(1km + 1m == 1001m); static_assert(10km / 5km == 2); @@ -61,6 +62,7 @@ static_assert(10km / 2 == 5km); static_assert(millimetre::symbol == "mm"); static_assert(centimetre::symbol == "cm"); +static_assert(decimetre::symbol == "dm"); static_assert(kilometre::symbol == "km"); // mass @@ -231,6 +233,8 @@ static_assert(1m * 1m * 1m == 1cub_m); static_assert(10sq_m * 10m == 100cub_m); static_assert(10km * 10km * 10km == 1000cub_km); static_assert(1cub_m == 1'000'000cub_cm); +static_assert(1dm * 1dm * 1dm == 1_l); +static_assert(1000_l == 1cub_m); static_assert(detail::unit_text() == "m³");