From 2cf736a1e685457adf0e6e4b746f406c16a53c00 Mon Sep 17 00:00:00 2001 From: Mateusz Pusz Date: Thu, 29 Dec 2022 20:18:48 +0100 Subject: [PATCH] feat: preventing possible future `units` crash when `using namespace std;` Resolves #317 --- example/avg_speed.cpp | 18 +- example/box_example.cpp | 22 +- example/capacitor_time_curve.cpp | 14 +- example/clcpp_response.cpp | 34 +- example/conversion_factor.cpp | 10 +- example/foot_pound_second.cpp | 18 +- example/glide_computer/glide_computer.cpp | 2 +- example/glide_computer/include/geographic.h | 18 +- .../glide_computer/include/glide_computer.h | 41 +- example/glide_computer_example.cpp | 20 +- example/hello_units.cpp | 16 +- example/include/ranged_representation.h | 6 +- example/include/validated_type.h | 2 +- example/kalman_filter/kalman.h | 76 +-- .../kalman_filter/kalman_filter-example_1.cpp | 10 +- .../kalman_filter/kalman_filter-example_2.cpp | 14 +- .../kalman_filter/kalman_filter-example_3.cpp | 14 +- .../kalman_filter/kalman_filter-example_4.cpp | 14 +- .../kalman_filter/kalman_filter-example_5.cpp | 12 +- .../kalman_filter/kalman_filter-example_6.cpp | 12 +- .../kalman_filter/kalman_filter-example_7.cpp | 12 +- .../kalman_filter/kalman_filter-example_8.cpp | 12 +- example/linear_algebra.cpp | 538 ++++++++++-------- example/measurement.cpp | 18 +- example/si_constants.cpp | 14 +- example/strong_angular_quantities.cpp | 22 +- example/total_energy.cpp | 24 +- src/core-fmt/CMakeLists.txt | 2 +- .../include/{units => mp_units}/bits/fmt.h | 14 +- .../{units => mp_units}/bits/fmt_hacks.h | 2 +- .../include/{units => mp_units}/format.h | 76 +-- src/core-io/CMakeLists.txt | 2 +- .../include/{units => mp_units}/quantity_io.h | 8 +- src/core/CMakeLists.txt | 16 +- .../{units => mp_units}/bits/algorithm.h | 10 +- .../bits/expression_template.h | 12 +- .../bits/external/fixed_string.h | 8 +- .../{units => mp_units}/bits/external/hacks.h | 0 .../bits/external/type_list.h | 6 +- .../bits/external/type_name.h | 0 .../bits/external/type_traits.h | 6 +- .../{units => mp_units}/bits/magnitude.h | 24 +- .../{units => mp_units}/bits/math_concepts.h | 4 +- .../include/{units => mp_units}/bits/prime.h | 6 +- .../{units => mp_units}/bits/quantity_cast.h | 30 +- .../bits/quantity_concepts.h | 12 +- .../include/{units => mp_units}/bits/ratio.h | 8 +- .../{units => mp_units}/bits/ratio_maths.h | 4 +- .../{units => mp_units}/bits/symbol_text.h | 8 +- .../{units => mp_units}/bits/text_tools.h | 8 +- .../customization_points.h | 14 +- .../include/{units => mp_units}/dimension.h | 10 +- .../include/{units => mp_units}/quantity.h | 54 +- .../{units => mp_units}/quantity_point.h | 8 +- .../{units => mp_units}/quantity_spec.h | 26 +- .../include/{units => mp_units}/reference.h | 8 +- .../{units => mp_units}/system_reference.h | 10 +- src/core/include/{units => mp_units}/unit.h | 30 +- src/systems/angular/CMakeLists.txt | 2 +- .../systems/angular/angular.h | 10 +- src/systems/cgs/CMakeLists.txt | 2 +- .../{units => mp_units}/systems/cgs/cgs.h | 8 +- src/systems/hep/CMakeLists.txt | 2 +- .../{units => mp_units}/systems/hep/hep.h | 8 +- src/systems/iau/CMakeLists.txt | 4 +- .../{units => mp_units}/systems/iau/iau.h | 8 +- src/systems/iec80000/CMakeLists.txt | 8 +- .../systems/iec80000/binary_prefixes.h | 6 +- .../systems/iec80000/iec80000.h | 8 +- .../systems/iec80000/quantities.h | 12 +- .../systems/iec80000/unit_symbols.h | 10 +- .../systems/iec80000/units.h | 10 +- src/systems/imperial/CMakeLists.txt | 4 +- .../systems/imperial/imperial.h | 8 +- src/systems/international/CMakeLists.txt | 2 +- .../systems/international/international.h | 8 +- src/systems/isq/CMakeLists.txt | 8 +- .../systems/isq/base_quantities.h | 10 +- .../systems/isq/electromagnetism.h | 12 +- .../{units => mp_units}/systems/isq/isq.h | 10 +- .../systems/isq/mechanics.h | 10 +- .../systems/isq/space_and_time.h | 8 +- .../systems/isq/thermodynamics.h | 12 +- src/systems/isq_angle/CMakeLists.txt | 4 +- .../systems/isq_angle/isq_angle.h | 10 +- src/systems/natural/CMakeLists.txt | 2 +- .../systems/natural/natural.h | 14 +- src/systems/si/CMakeLists.txt | 8 +- .../systems/si/constants.h | 10 +- .../{units => mp_units}/systems/si/prefixes.h | 6 +- .../{units => mp_units}/systems/si/si.h | 8 +- .../systems/si/unit_symbols.h | 8 +- .../{units => mp_units}/systems/si/units.h | 14 +- src/systems/typographic/CMakeLists.txt | 4 +- .../systems/typographic/typographic.h | 8 +- src/systems/usc/CMakeLists.txt | 2 +- .../{units => mp_units}/systems/usc/usc.h | 8 +- src/utility/CMakeLists.txt | 2 +- .../include/{units => mp_units}/chrono.h | 12 +- .../include/{units => mp_units}/math.h | 24 +- .../include/{units => mp_units}/random.h | 6 +- test/unit_test/runtime/almost_equals.h | 8 +- test/unit_test/runtime/distribution_test.cpp | 100 ++-- test/unit_test/runtime/fmt_test.cpp | 22 +- test/unit_test/runtime/math_test.cpp | 28 +- test/unit_test/static/angle_test.cpp | 16 +- test/unit_test/static/cgs_test.cpp | 12 +- test/unit_test/static/dimension_test.cpp | 71 +-- test/unit_test/static/fixed_string_test.cpp | 4 +- test/unit_test/static/hep_test.cpp | 18 +- test/unit_test/static/iec80000_test.cpp | 14 +- test/unit_test/static/imperial_test.cpp | 12 +- test/unit_test/static/isq_angle_test.cpp | 16 +- test/unit_test/static/isq_test.cpp | 10 +- test/unit_test/static/math_test.cpp | 24 +- test/unit_test/static/prime_test.cpp | 4 +- test/unit_test/static/quantity_spec_test.cpp | 105 ++-- test/unit_test/static/ratio_test.cpp | 4 +- test/unit_test/static/reference_test.cpp | 16 +- test/unit_test/static/symbol_text_test.cpp | 4 +- test/unit_test/static/type_list_test.cpp | 6 +- test/unit_test/static/unit_test.cpp | 12 +- test/unit_test/static/usc_test.cpp | 12 +- 123 files changed, 1205 insertions(+), 1092 deletions(-) rename src/core-fmt/include/{units => mp_units}/bits/fmt.h (97%) rename src/core-fmt/include/{units => mp_units}/bits/fmt_hacks.h (97%) rename src/core-fmt/include/{units => mp_units}/format.h (83%) rename src/core-io/include/{units => mp_units}/quantity_io.h (95%) rename src/core/include/{units => mp_units}/bits/algorithm.h (94%) rename src/core/include/{units => mp_units}/bits/expression_template.h (99%) rename src/core/include/{units => mp_units}/bits/external/fixed_string.h (96%) rename src/core/include/{units => mp_units}/bits/external/hacks.h (100%) rename src/core/include/{units => mp_units}/bits/external/type_list.h (98%) rename src/core/include/{units => mp_units}/bits/external/type_name.h (100%) rename src/core/include/{units => mp_units}/bits/external/type_traits.h (96%) rename src/core/include/{units => mp_units}/bits/magnitude.h (98%) rename src/core/include/{units => mp_units}/bits/math_concepts.h (95%) rename src/core/include/{units => mp_units}/bits/prime.h (98%) rename src/core/include/{units => mp_units}/bits/quantity_cast.h (90%) rename src/core/include/{units => mp_units}/bits/quantity_concepts.h (97%) rename src/core/include/{units => mp_units}/bits/ratio.h (96%) rename src/core/include/{units => mp_units}/bits/ratio_maths.h (98%) rename src/core/include/{units => mp_units}/bits/symbol_text.h (98%) rename src/core/include/{units => mp_units}/bits/text_tools.h (95%) rename src/core/include/{units => mp_units}/customization_points.h (93%) rename src/core/include/{units => mp_units}/dimension.h (98%) rename src/core/include/{units => mp_units}/quantity.h (92%) rename src/core/include/{units => mp_units}/quantity_point.h (98%) rename src/core/include/{units => mp_units}/quantity_spec.h (97%) rename src/core/include/{units => mp_units}/reference.h (97%) rename src/core/include/{units => mp_units}/system_reference.h (95%) rename src/core/include/{units => mp_units}/unit.h (98%) rename src/systems/angular/include/{units => mp_units}/systems/angular/angular.h (93%) rename src/systems/cgs/include/{units => mp_units}/systems/cgs/cgs.h (95%) rename src/systems/hep/include/{units => mp_units}/systems/hep/hep.h (97%) rename src/systems/iau/include/{units => mp_units}/systems/iau/iau.h (96%) rename src/systems/iec80000/include/{units => mp_units}/systems/iec80000/binary_prefixes.h (96%) rename src/systems/iec80000/include/{units => mp_units}/systems/iec80000/iec80000.h (85%) rename src/systems/iec80000/include/{units => mp_units}/systems/iec80000/quantities.h (93%) rename src/systems/iec80000/include/{units => mp_units}/systems/iec80000/unit_symbols.h (93%) rename src/systems/iec80000/include/{units => mp_units}/systems/iec80000/units.h (89%) rename src/systems/imperial/include/{units => mp_units}/systems/imperial/imperial.h (96%) rename src/systems/international/include/{units => mp_units}/systems/international/international.h (96%) rename src/systems/isq/include/{units => mp_units}/systems/isq/base_quantities.h (93%) rename src/systems/isq/include/{units => mp_units}/systems/isq/electromagnetism.h (97%) rename src/systems/isq/include/{units => mp_units}/systems/isq/isq.h (83%) rename src/systems/isq/include/{units => mp_units}/systems/isq/mechanics.h (97%) rename src/systems/isq/include/{units => mp_units}/systems/isq/space_and_time.h (96%) rename src/systems/isq/include/{units => mp_units}/systems/isq/thermodynamics.h (96%) rename src/systems/isq_angle/include/{units => mp_units}/systems/isq_angle/isq_angle.h (93%) rename src/systems/natural/include/{units => mp_units}/systems/natural/natural.h (90%) rename src/systems/si/include/{units => mp_units}/systems/si/constants.h (95%) rename src/systems/si/include/{units => mp_units}/systems/si/prefixes.h (98%) rename src/systems/si/include/{units => mp_units}/systems/si/si.h (87%) rename src/systems/si/include/{units => mp_units}/systems/si/unit_symbols.h (99%) rename src/systems/si/include/{units => mp_units}/systems/si/units.h (96%) rename src/systems/typographic/include/{units => mp_units}/systems/typographic/typographic.h (92%) rename src/systems/usc/include/{units => mp_units}/systems/usc/usc.h (98%) rename src/utility/include/{units => mp_units}/chrono.h (94%) rename src/utility/include/{units => mp_units}/math.h (96%) rename src/utility/include/{units => mp_units}/random.h (99%) diff --git a/example/avg_speed.cpp b/example/avg_speed.cpp index 1a578fab..a22d8537 100644 --- a/example/avg_speed.cpp +++ b/example/avg_speed.cpp @@ -20,18 +20,18 @@ // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE // SOFTWARE. -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include #include #include namespace { -using namespace units; -using namespace units::si::unit_symbols; +using namespace mp_units; +using namespace mp_units::si::unit_symbols; constexpr quantity fixed_int_si_avg_speed(quantity d, quantity t) @@ -87,7 +87,7 @@ void example() // Customary Units (int) { - using namespace units::international::unit_symbols; + using namespace mp_units::international::unit_symbols; constexpr auto distance = isq::length(140, mi); constexpr auto duration = isq::time(2, h); @@ -103,7 +103,7 @@ void example() // Customary Units (double) { - using namespace units::international::unit_symbols; + using namespace mp_units::international::unit_symbols; constexpr auto distance = isq::length(140., mi); constexpr auto duration = isq::time(2., h); diff --git a/example/box_example.cpp b/example/box_example.cpp index 9c710a4b..c1c6ffa8 100644 --- a/example/box_example.cpp +++ b/example/box_example.cpp @@ -20,24 +20,24 @@ // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE // SOFTWARE. -#include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include +#include #include #include #include template - requires units::is_scalar -inline constexpr bool units::is_vector = true; + requires mp_units::is_scalar +inline constexpr bool mp_units::is_vector = true; namespace { -using namespace units; -using namespace units::si::unit_symbols; +using namespace mp_units; +using namespace mp_units::si::unit_symbols; inline constexpr auto g = si::standard_gravity(1); inline constexpr auto air_density = isq::mass_density(1.225, kg / m3); @@ -82,7 +82,7 @@ public: int main() { - using namespace units::si; + using namespace mp_units::si; constexpr auto mm = isq::length[unit_symbols::mm]; // helper reference object diff --git a/example/capacitor_time_curve.cpp b/example/capacitor_time_curve.cpp index b538a114..01e30fb8 100644 --- a/example/capacitor_time_curve.cpp +++ b/example/capacitor_time_curve.cpp @@ -20,16 +20,16 @@ physical_quantities */ -#include // IWYU pragma: keep -#include -#include -#include +#include // IWYU pragma: keep +#include +#include +#include #include int main() { - using namespace units; - using namespace units::si::unit_symbols; + using namespace mp_units; + using namespace mp_units::si::unit_symbols; std::cout << "mp-units capacitor time curve example...\n"; std::cout.setf(std::ios_base::fixed, std::ios_base::floatfield); @@ -40,7 +40,7 @@ int main() constexpr auto R = isq::resistance(4.7, si::kilo); for (auto t = isq::time(0, ms); t <= isq::time(50, ms); ++t) { - const weak_quantity_of auto Vt = V0 * units::exp(-t / (R * C)); + const weak_quantity_of auto Vt = V0 * mp_units::exp(-t / (R * C)); std::cout << "at " << t << " voltage is "; diff --git a/example/clcpp_response.cpp b/example/clcpp_response.cpp index 5ada0522..743d47e4 100644 --- a/example/clcpp_response.cpp +++ b/example/clcpp_response.cpp @@ -15,24 +15,24 @@ along with this program. If not, see http://www.gnu.org/licenses./ */ -#include -#include -#include -#include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include +#include +#include +#include +#include #include namespace { void simple_quantities() { - using namespace units; - using namespace units::si; - using namespace units::international; + using namespace mp_units; + using namespace mp_units::si; + using namespace mp_units::international; using distance = quantity]>; using duration = quantity; @@ -55,9 +55,9 @@ void simple_quantities() void quantities_with_typed_units() { - using namespace units; - using namespace units::si; - using namespace units::international; + using namespace mp_units; + using namespace mp_units::si; + using namespace mp_units::international; constexpr auto km = isq::distance[kilo](1.0); constexpr auto miles = isq::distance[mile](1.0); @@ -103,8 +103,8 @@ void quantities_with_typed_units() void calcs_comparison() { - using namespace units; - using namespace units::si::unit_symbols; + using namespace mp_units; + using namespace mp_units::si::unit_symbols; std::cout << "\nA distinct unit for each type is efficient and accurate\n" "when adding two values of the same very big\n" diff --git a/example/conversion_factor.cpp b/example/conversion_factor.cpp index a07e3371..cbdaaef0 100644 --- a/example/conversion_factor.cpp +++ b/example/conversion_factor.cpp @@ -15,9 +15,9 @@ along with this program. If not, see http://www.gnu.org/licenses./ */ -#include -#include -#include +#include +#include +#include #include #include @@ -28,7 +28,7 @@ namespace { -template +template requires std::constructible_from inline constexpr double conversion_factor(Target, Source) { @@ -39,7 +39,7 @@ inline constexpr double conversion_factor(Target, Source) int main() { - using namespace units; + using namespace mp_units; std::cout << "conversion factor in mp-units...\n\n"; diff --git a/example/foot_pound_second.cpp b/example/foot_pound_second.cpp index a404992d..70d013b2 100644 --- a/example/foot_pound_second.cpp +++ b/example/foot_pound_second.cpp @@ -20,17 +20,17 @@ // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE // SOFTWARE. -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include #include #include -using namespace units; -using namespace units::international::unit_symbols; -using namespace units::si::unit_symbols; +using namespace mp_units; +using namespace mp_units::international::unit_symbols; +using namespace mp_units::si::unit_symbols; // Some basic specs for the warship @@ -74,7 +74,7 @@ void print_details(std::string_view description, const Ship& ship) int main() { - using units::international::unit_symbols::ft; // collides with si::femto + using mp_units::international::unit_symbols::ft; // collides with si::femto // KMS Bismark, using the units the Germans would use, taken from Wiki auto bismark = Ship{.length{isq::length[m](251.)}, diff --git a/example/glide_computer/glide_computer.cpp b/example/glide_computer/glide_computer.cpp index b378114d..0ec5aca4 100644 --- a/example/glide_computer/glide_computer.cpp +++ b/example/glide_computer/glide_computer.cpp @@ -27,7 +27,7 @@ namespace glide_computer { -using namespace units; +using namespace mp_units; task::legs task::make_legs(const waypoints& wpts) { diff --git a/example/glide_computer/include/geographic.h b/example/glide_computer/include/geographic.h index e0a597d4..eba165c3 100644 --- a/example/glide_computer/include/geographic.h +++ b/example/glide_computer/include/geographic.h @@ -23,10 +23,10 @@ #pragma once #include "ranged_representation.h" -#include -#include -#include -#include +#include +#include +#include +#include #include #include #include @@ -35,10 +35,12 @@ namespace geographic { template -using latitude = units::quantity>; +using latitude = + mp_units::quantity>; template -using longitude = units::quantity>; +using longitude = + mp_units::quantity>; template std::basic_ostream& operator<<(std::basic_ostream& os, const latitude& lat) @@ -125,7 +127,7 @@ struct STD_FMT::formatter> : formatter { namespace geographic { -using distance = units::quantity]>; +using distance = mp_units::quantity]>; template struct position { @@ -136,7 +138,7 @@ struct position { template distance spherical_distance(position from, position to) { - using namespace units; + using namespace mp_units; constexpr auto earth_radius = 6371 * isq::radius[si::kilo]; constexpr auto p = std::numbers::pi_v / 180; diff --git a/example/glide_computer/include/glide_computer.h b/example/glide_computer/include/glide_computer.h index 7c34daa0..74237cee 100644 --- a/example/glide_computer/include/glide_computer.h +++ b/example/glide_computer/include/glide_computer.h @@ -23,11 +23,11 @@ #pragma once #include "geographic.h" -#include -#include -#include // IWYU pragma: keep -#include -#include +#include +#include +#include // IWYU pragma: keep +#include +#include #include #include #include @@ -54,23 +54,23 @@ namespace glide_computer { // https://en.wikipedia.org/wiki/Flight_planning#Units_of_measurement -inline constexpr struct mean_sea_level : units::absolute_point_origin { +inline constexpr struct mean_sea_level : mp_units::absolute_point_origin { } mean_sea_level; -QUANTITY_SPEC(rate_of_climb_speed, units::isq::height / units::isq::time); +QUANTITY_SPEC(rate_of_climb_speed, mp_units::isq::height / mp_units::isq::time); // length -using distance = units::quantity]>; -using height = units::quantity; -using altitude = units::quantity_point; +using distance = mp_units::quantity]>; +using height = mp_units::quantity; +using altitude = mp_units::quantity_point; // time -using duration = units::quantity; -using timestamp = - units::quantity_point{}>; +using duration = mp_units::quantity; +using timestamp = mp_units::quantity_point{}>; // speed -using velocity = units::quantity / units::si::hour]>; -using rate_of_climb = units::quantity; +using velocity = mp_units::quantity / mp_units::si::hour]>; +using rate_of_climb = mp_units::quantity; // text output template @@ -83,11 +83,11 @@ std::basic_ostream& operator<<(std::basic_ostream& template<> struct STD_FMT::formatter : - formatter> { + formatter> { template auto format(const glide_computer::altitude& a, FormatContext& ctx) { - formatter>::format(a.absolute(), ctx); + formatter>::format(a.absolute(), ctx); return STD_FMT::format_to(ctx.out(), " AMSL"); } }; @@ -105,7 +105,7 @@ struct glider { std::array polar; }; -constexpr units::weak_quantity_of auto glide_ratio(const glider::polar_point& polar) +constexpr mp_units::weak_quantity_of auto glide_ratio(const glider::polar_point& polar) { return polar.v / -polar.climb; } @@ -193,10 +193,11 @@ altitude terrain_level_alt(const task& t, const flight_point& pos); constexpr height agl(altitude glider_alt, altitude terrain_level) { return glider_alt - terrain_level; } -inline units::quantity]> length_3d(distance dist, height h) +inline mp_units::quantity]> length_3d(distance dist, + height h) { // TODO Should we be able to calculate this on quantity of different kinds? What to return? - return hypot(quantity_cast(dist), quantity_cast(h)); + return hypot(quantity_cast(dist), quantity_cast(h)); } distance glide_distance(const flight_point& pos, const glider& g, const task& t, const safety& s, altitude ground_alt); diff --git a/example/glide_computer_example.cpp b/example/glide_computer_example.cpp index 3b0cf7d8..75c7b9b8 100644 --- a/example/glide_computer_example.cpp +++ b/example/glide_computer_example.cpp @@ -21,11 +21,11 @@ // SOFTWARE. #include "glide_computer.h" -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include #include #include #include @@ -38,11 +38,11 @@ namespace { using namespace glide_computer; -using namespace units; +using namespace mp_units; auto get_gliders() { - using namespace units::si::unit_symbols; + using namespace mp_units::si::unit_symbols; UNITS_DIAGNOSTIC_PUSH UNITS_DIAGNOSTIC_IGNORE_MISSING_BRACES static const std::array gliders = { @@ -56,7 +56,7 @@ auto get_gliders() auto get_weather_conditions() { - using namespace units::si::unit_symbols; + using namespace mp_units::si::unit_symbols; static const std::array weather_conditions = { std::pair{"Good", weather{1900 * isq::height[m], 4.3 * rate_of_climb_speed[m / s]}}, std::pair{"Medium", weather{1550 * isq::height[m], 2.8 * rate_of_climb_speed[m / s]}}, @@ -67,7 +67,7 @@ auto get_weather_conditions() auto get_waypoints() { using namespace geographic::literals; - using namespace units::international::unit_symbols; + using namespace mp_units::international::unit_symbols; static const std::array waypoints = { waypoint{"EPPR", {54.24772_N, 18.6745_E}, altitude{16. * isq::altitude[ft]}}, // N54°14'51.8" E18°40'28.2" waypoint{"EPGI", {53.52442_N, 18.84947_E}, altitude{115. * isq::altitude[ft]}} // N53°31'27.9" E18°50'58.1" @@ -157,7 +157,7 @@ void print(const aircraft_tow& tow) void example() { - using namespace units::si::unit_symbols; + using namespace mp_units::si::unit_symbols; const safety sfty = {300 * isq::height[m]}; const auto gliders = get_gliders(); diff --git a/example/hello_units.cpp b/example/hello_units.cpp index 0e0d6557..194ffa6f 100644 --- a/example/hello_units.cpp +++ b/example/hello_units.cpp @@ -20,14 +20,14 @@ // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE // SOFTWARE. -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include #include -using namespace units; +using namespace mp_units; constexpr quantity_of auto avg_speed(quantity_of auto d, quantity_of auto t) { @@ -36,8 +36,8 @@ constexpr quantity_of auto avg_speed(quantity_of auto int main() { - using namespace units::si::unit_symbols; - using namespace units::international::unit_symbols; + using namespace mp_units::si::unit_symbols; + using namespace mp_units::international::unit_symbols; constexpr auto v1 = isq::speed(110, km / h); constexpr auto v2 = isq::speed(70., mph); diff --git a/example/include/ranged_representation.h b/example/include/ranged_representation.h index 47b55fe6..617e3612 100644 --- a/example/include/ranged_representation.h +++ b/example/include/ranged_representation.h @@ -23,8 +23,8 @@ #pragma once #include "validated_type.h" -#include -#include +#include +#include #include #include @@ -44,7 +44,7 @@ public: }; template -inline constexpr bool units::is_scalar> = units::is_scalar; +inline constexpr bool mp_units::is_scalar> = mp_units::is_scalar; template struct std::common_type> : diff --git a/example/include/validated_type.h b/example/include/validated_type.h index bf44bbbc..1606d310 100644 --- a/example/include/validated_type.h +++ b/example/include/validated_type.h @@ -23,7 +23,7 @@ #pragma once #include -#include +#include #include inline constexpr struct validated_tag { diff --git a/example/kalman_filter/kalman.h b/example/kalman_filter/kalman.h index 121c5b4e..fe8a73d8 100644 --- a/example/kalman_filter/kalman.h +++ b/example/kalman_filter/kalman.h @@ -22,28 +22,28 @@ #pragma once -#include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include +#include #include namespace kalman { template -concept QuantityOrQuantityPoint = units::Quantity || units::QuantityPoint; +concept QuantityOrQuantityPoint = mp_units::Quantity || mp_units::QuantityPoint; -template +template inline constexpr bool are_time_derivatives = false; -template +template inline constexpr bool are_time_derivatives = true; -template +template inline constexpr bool are_time_derivatives = - (D1 / D2 == units::isq::dim_time) && are_time_derivatives; + (D1 / D2 == mp_units::isq::dim_time) && are_time_derivatives; // state template @@ -54,7 +54,7 @@ struct state { }; template -concept State = units::is_specialization_of; +concept State = mp_units::is_specialization_of; template constexpr auto& get(state& s) @@ -73,7 +73,7 @@ template struct estimation { private: static constexpr auto uncertainty_ref = QQP::reference * QQP::reference; - using uncertainty_type = units::quantity; + using uncertainty_type = mp_units::quantity; public: kalman::state state; // TODO extend kalman functions to work with this variadic parameter list uncertainty_type uncertainty; @@ -81,29 +81,29 @@ public: #if UNITS_COMP_CLANG <= 14 -template +template estimation(state, U) -> estimation; #endif // kalman gain -template -constexpr units::quantity kalman_gain(Q estimate_uncertainty, - Q measurement_uncertainty) +template +constexpr mp_units::quantity kalman_gain(Q estimate_uncertainty, + Q measurement_uncertainty) { return estimate_uncertainty / (estimate_uncertainty + measurement_uncertainty); } // state update -template K> +template K> requires(Q::quantity_spec == QM::quantity_spec) constexpr state state_update(const state& predicted, QM measured, K gain) { return {get<0>(predicted) + gain * (measured - get<0>(predicted))}; } -template K, - units::quantity_of T> +template K, + mp_units::quantity_of T> requires(Q1::quantity_spec == QM::quantity_spec) constexpr state state_update(const state& predicted, QM measured, std::array gain, T interval) { @@ -112,8 +112,8 @@ constexpr state state_update(const state& predicted, QM measured return {q1, q2}; } -template K, - units::quantity_of T> +template K, mp_units::quantity_of T> requires(Q1::quantity_spec == QM::quantity_spec) constexpr state state_update(const state& predicted, QM measured, std::array gain, T interval) @@ -125,14 +125,14 @@ constexpr state state_update(const state& predicted, QM } // covariance update -template K> +template K> constexpr Q covariance_update(Q uncertainty, K gain) { return (1 - gain) * uncertainty; } // state extrapolation -template T> +template T> constexpr state state_extrapolation(const state& estimated, T interval) { const auto q1 = get<0>(estimated) + get<1>(estimated) * interval; @@ -140,7 +140,7 @@ constexpr state state_extrapolation(const state& estimated, T in return {q1, q2}; } -template T> +template T> constexpr state state_extrapolation(const state& estimated, T interval) { const auto q1 = get<0>(estimated) + get<1>(estimated) * interval + get<2>(estimated) * pow<2>(interval) / 2; @@ -150,7 +150,7 @@ constexpr state state_extrapolation(const state& estimat } // covariance extrapolation -template +template constexpr Q covariance_extrapolation(Q uncertainty, Q process_noise_variance) { return uncertainty + process_noise_variance; @@ -162,8 +162,8 @@ template struct STD_FMT::formatter> { constexpr auto parse(format_parse_context& ctx) { - units::detail::dynamic_specs_handler handler(specs, ctx); - return units::detail::parse_format_specs(ctx.begin(), ctx.end(), handler); + mp_units::detail::dynamic_specs_handler handler(specs, ctx); + return mp_units::detail::parse_format_specs(ctx.begin(), ctx.end(), handler); } template @@ -191,28 +191,28 @@ struct STD_FMT::formatter> { } std::string global_format_buffer; - units::detail::quantity_global_format_specs global_specs = {specs.fill, specs.align, specs.width}; - units::detail::format_global_buffer(std::back_inserter(global_format_buffer), global_specs); + mp_units::detail::quantity_global_format_specs global_specs = {specs.fill, specs.align, specs.width}; + mp_units::detail::format_global_buffer(std::back_inserter(global_format_buffer), global_specs); return STD_FMT::vformat_to(ctx.out(), global_format_buffer, STD_FMT::make_format_args(value_buffer)); } private: - units::detail::dynamic_format_specs specs; + mp_units::detail::dynamic_format_specs specs; }; template struct STD_FMT::formatter> { constexpr auto parse(format_parse_context& ctx) { - units::detail::dynamic_specs_handler handler(specs, ctx); - return units::detail::parse_format_specs(ctx.begin(), ctx.end(), handler); + mp_units::detail::dynamic_specs_handler handler(specs, ctx); + return mp_units::detail::parse_format_specs(ctx.begin(), ctx.end(), handler); } template auto format(kalman::estimation e, FormatContext& ctx) { - units::Quantity auto q = [](const Q& t) { - if constexpr (units::Quantity) + mp_units::Quantity auto q = [](const Q& t) { + if constexpr (mp_units::Quantity) return t; else return t.relative(); @@ -227,11 +227,11 @@ struct STD_FMT::formatter> { } std::string global_format_buffer; - units::detail::quantity_global_format_specs global_specs = {specs.fill, specs.align, specs.width}; - units::detail::format_global_buffer(std::back_inserter(global_format_buffer), global_specs); + mp_units::detail::quantity_global_format_specs global_specs = {specs.fill, specs.align, specs.width}; + mp_units::detail::format_global_buffer(std::back_inserter(global_format_buffer), global_specs); return STD_FMT::vformat_to(ctx.out(), global_format_buffer, STD_FMT::make_format_args(value_buffer)); } private: - units::detail::dynamic_format_specs specs; + mp_units::detail::dynamic_format_specs specs; }; diff --git a/example/kalman_filter/kalman_filter-example_1.cpp b/example/kalman_filter/kalman_filter-example_1.cpp index f9b4bfa7..c2a30f1c 100644 --- a/example/kalman_filter/kalman_filter-example_1.cpp +++ b/example/kalman_filter/kalman_filter-example_1.cpp @@ -21,15 +21,15 @@ // SOFTWARE. #include "kalman.h" -#include -#include -#include +#include +#include +#include #include #include // Based on: https://www.kalmanfilter.net/alphabeta.html#ex1 -using namespace units; +using namespace mp_units; void print_header(const kalman::State auto& initial) { @@ -46,7 +46,7 @@ void print(auto iteration, quantity_of auto gain, Quantity auto m int main() { - using namespace units::si::unit_symbols; + using namespace mp_units::si::unit_symbols; using state = kalman::state>; const state initial = {1 * isq::mass[kg]}; diff --git a/example/kalman_filter/kalman_filter-example_2.cpp b/example/kalman_filter/kalman_filter-example_2.cpp index b480c08b..963adde1 100644 --- a/example/kalman_filter/kalman_filter-example_2.cpp +++ b/example/kalman_filter/kalman_filter-example_2.cpp @@ -21,19 +21,19 @@ // SOFTWARE. #include "kalman.h" -#include -#include -#include +#include +#include +#include #include #include // Based on: https://www.kalmanfilter.net/alphabeta.html#ex2 template - requires units::is_scalar -inline constexpr bool units::is_vector = true; + requires mp_units::is_scalar +inline constexpr bool mp_units::is_vector = true; -using namespace units; +using namespace mp_units; void print_header(const kalman::State auto& initial) { @@ -48,7 +48,7 @@ void print(auto iteration, Quantity auto measured, const kalman::State auto& cur int main() { - using namespace units::si::unit_symbols; + using namespace mp_units::si::unit_symbols; using state = kalman::state, quantity>; const auto interval = 5 * isq::period_duration[s]; diff --git a/example/kalman_filter/kalman_filter-example_3.cpp b/example/kalman_filter/kalman_filter-example_3.cpp index 8872e014..b9313afa 100644 --- a/example/kalman_filter/kalman_filter-example_3.cpp +++ b/example/kalman_filter/kalman_filter-example_3.cpp @@ -21,19 +21,19 @@ // SOFTWARE. #include "kalman.h" -#include -#include -#include +#include +#include +#include #include #include // Based on: https://www.kalmanfilter.net/alphabeta.html#ex3 template - requires units::is_scalar -inline constexpr bool units::is_vector = true; + requires mp_units::is_scalar +inline constexpr bool mp_units::is_vector = true; -using namespace units; +using namespace mp_units; void print_header(const kalman::State auto& initial) { @@ -48,7 +48,7 @@ void print(auto iteration, Quantity auto measured, const kalman::State auto& cur int main() { - using namespace units::si::unit_symbols; + using namespace mp_units::si::unit_symbols; using state = kalman::state, quantity>; const auto interval = 5 * isq::period_duration[s]; diff --git a/example/kalman_filter/kalman_filter-example_4.cpp b/example/kalman_filter/kalman_filter-example_4.cpp index 5b3dc698..724b4c95 100644 --- a/example/kalman_filter/kalman_filter-example_4.cpp +++ b/example/kalman_filter/kalman_filter-example_4.cpp @@ -21,19 +21,19 @@ // SOFTWARE. #include "kalman.h" -#include -#include -#include +#include +#include +#include #include #include // Based on: https://www.kalmanfilter.net/alphabeta.html#ex4 template - requires units::is_scalar -inline constexpr bool units::is_vector = true; + requires mp_units::is_scalar +inline constexpr bool mp_units::is_vector = true; -using namespace units; +using namespace mp_units; void print_header(const kalman::State auto& initial) { @@ -48,7 +48,7 @@ void print(auto iteration, Quantity auto measured, const kalman::State auto& cur int main() { - using namespace units::si::unit_symbols; + using namespace mp_units::si::unit_symbols; using state = kalman::state, quantity, quantity>; const auto interval = 5. * isq::period_duration[s]; diff --git a/example/kalman_filter/kalman_filter-example_5.cpp b/example/kalman_filter/kalman_filter-example_5.cpp index f420aa1b..4547a8fa 100644 --- a/example/kalman_filter/kalman_filter-example_5.cpp +++ b/example/kalman_filter/kalman_filter-example_5.cpp @@ -21,16 +21,16 @@ // SOFTWARE. #include "kalman.h" -#include -#include -#include -#include +#include +#include +#include +#include #include #include // Based on: https://www.kalmanfilter.net/kalman1d.html#ex5 -using namespace units; +using namespace mp_units; template void print_header(kalman::estimation initial) @@ -50,7 +50,7 @@ void print(auto iteration, K gain, Q measured, kalman::estimation current, ka int main() { using namespace kalman; - using namespace units::si::unit_symbols; + using namespace mp_units::si::unit_symbols; const estimation initial = {state{60. * isq::height[m]}, pow<2>(15. * isq::height[m])}; const std::array measurements = {48.54 * isq::height[m], 47.11 * isq::height[m], 55.01 * isq::height[m], diff --git a/example/kalman_filter/kalman_filter-example_6.cpp b/example/kalman_filter/kalman_filter-example_6.cpp index e622d84b..66d5bee7 100644 --- a/example/kalman_filter/kalman_filter-example_6.cpp +++ b/example/kalman_filter/kalman_filter-example_6.cpp @@ -21,17 +21,17 @@ // SOFTWARE. #include "kalman.h" -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include #include #include // Based on: https://www.kalmanfilter.net/kalman1d.html#ex6 -using namespace units; +using namespace mp_units; template void print_header(kalman::estimation initial) diff --git a/example/kalman_filter/kalman_filter-example_7.cpp b/example/kalman_filter/kalman_filter-example_7.cpp index 816a8561..3d10edf0 100644 --- a/example/kalman_filter/kalman_filter-example_7.cpp +++ b/example/kalman_filter/kalman_filter-example_7.cpp @@ -21,17 +21,17 @@ // SOFTWARE. #include "kalman.h" -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include #include #include // Based on: https://www.kalmanfilter.net/kalman1d.html#ex7 -using namespace units; +using namespace mp_units; template void print_header(kalman::estimation initial) diff --git a/example/kalman_filter/kalman_filter-example_8.cpp b/example/kalman_filter/kalman_filter-example_8.cpp index 29191450..a5b9d83d 100644 --- a/example/kalman_filter/kalman_filter-example_8.cpp +++ b/example/kalman_filter/kalman_filter-example_8.cpp @@ -21,17 +21,17 @@ // SOFTWARE. #include "kalman.h" -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include #include #include // Based on: https://www.kalmanfilter.net/kalman1d.html#ex8 -using namespace units; +using namespace mp_units; template void print_header(kalman::estimation initial) diff --git a/example/linear_algebra.cpp b/example/linear_algebra.cpp index c62562cd..a18b1330 100644 --- a/example/linear_algebra.cpp +++ b/example/linear_algebra.cpp @@ -22,11 +22,13 @@ #include // linear_algebra.hpp has to be included first otherwise the header will fail to compile! -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include +#include +#include #include namespace STD_LA { @@ -57,170 +59,81 @@ std::ostream& operator<<(std::ostream& os, const matrix& v) } // namespace STD_LA -namespace { - -using namespace units; - template using vector = std::math::fs_vector; -template -using matrix = std::math::fs_matrix; +template +inline constexpr bool mp_units::is_vector> = true; -constexpr auto mm = isq::length[si::milli]; -constexpr auto m = isq::length[si::metre]; -constexpr auto km = isq::length[si::kilo]; -constexpr auto N = isq::force[si::newton]; +namespace { -void vector_of_quantity_add() +using namespace mp_units; +using namespace mp_units::si::unit_symbols; + +// template +// using matrix = std::math::fs_matrix; + + +// constexpr auto mm = isq::length[si::milli]; +// constexpr auto m = isq::length[si::metre]; +// constexpr auto km = isq::length[si::kilo]; +// constexpr auto N = isq::force[si::newton]; + +// template +// using length_v = quantity>; + +// template +// using force_v = quantity>; + +void quantity_of_vector_cast() { - std::cout << "\nvector_of_quantity_add:\n"; + std::cout << "\nquantity_of_vector_cast:\n"; - vector> v = {1 * m, 2 * m, 3 * m}; - vector> u = {3 * m, 2 * m, 1 * m}; - vector> t = {3 * km, 2 * km, 1 * km}; - - std::cout << "v = " << v << "\n"; - std::cout << "u = " << u << "\n"; - std::cout << "t = " << t << "\n"; - - std::cout << "v + u = " << v + u << "\n"; - std::cout << "v + t = " << v + t << "\n"; - std::cout << "t[m] = " << vector>(t) << "\n"; -} - -void vector_of_quantity_multiply_same() -{ - std::cout << "\nvector_of_quantity_multiply_same:\n"; - - vector> v = {1 * m, 2 * m, 3 * m}; - vector> u = {3 * m, 2 * m, 1 * m}; + quantity> v{vector{1001, 1002, 1003}}; + quantity> u{vector{3, 2, 1}}; std::cout << "v = " << v << "\n"; std::cout << "u = " << u << "\n"; - std::cout << "v * u = " << v * u << "\n"; - std::cout << "2 * m * v = " << 2. * m * v << "\n"; + std::cout << "v[km] = " << quantity_cast(v) << "\n"; + std::cout << "u[m] = " << u[m] << "\n"; } -void vector_of_quantity_multiply_different() +void quantity_of_vector_multiply_by_scalar_value() { - std::cout << "\nvector_of_quantity_multiply_different:\n"; + std::cout << "\nquantity_of_vector_multiply_scalar_value:\n"; - vector> v = {1 * N, 2 * N, 3 * N}; - vector> u = {3 * m, 2 * m, 1 * m}; - - std::cout << "v = " << v << "\n"; - std::cout << "u = " << u << "\n"; - - std::cout << "v * u = " << v * u << "\n"; - std::cout << "2 * N * u = " << 2. * N * u << "\n"; - std::cout << "2 * u = " << 2 * u << "\n"; -} - -void vector_of_quantity_divide_by_scalar() -{ - std::cout << "\nvector_of_quantity_divide_by_scalar:\n"; - - vector> v = {4 * m, 8 * m, 12 * m}; + quantity> v{vector{1, 2, 3}}; std::cout << "v = " << v << "\n"; - // TODO Uncomment when bug in the LA is fixed - // std::cout << "v / (2 * s) = " << v / (2 * s) << "\n"; - // std::cout << "v / 2 = " << v / 2 << "\n"; + std::cout << "2 * v = " << 2 * v << "\n"; } -void vector_of_quantity_tests() +void quantity_of_vector_divide_by_scalar_value() { - vector_of_quantity_add(); - vector_of_quantity_multiply_same(); - vector_of_quantity_multiply_different(); - vector_of_quantity_divide_by_scalar(); + std::cout << "\nquantity_of_vector_divide_scalar_value:\n"; + + quantity> v{vector{2, 4, 6}}; + + std::cout << "v = " << v << "\n"; + + std::cout << "v / 2 = " << v / 2 << "\n"; } -void matrix_of_quantity_add() -{ - std::cout << "\nmatrix_of_quantity_add:\n"; - - matrix> v = {{1 * m, 2 * m, 3 * m}, {4 * m, 5 * m, 6 * m}, {7 * m, 8 * m, 9 * m}}; - matrix> u = {{3 * m, 2 * m, 1 * m}, {3 * m, 2 * m, 1 * m}, {3 * m, 2 * m, 1 * m}}; - matrix> t = {{3 * mm, 2 * mm, 1 * mm}, {3 * mm, 2 * mm, 1 * mm}, {3 * mm, 2 * mm, 1 * mm}}; - - std::cout << "v =\n" << v << "\n"; - std::cout << "u =\n" << u << "\n"; - std::cout << "t =\n" << t << "\n"; - - std::cout << "v + u =\n" << v + u << "\n"; - std::cout << "v + t =\n" << v + t << "\n"; - - // TODO Uncomment when fixed in the LA lib - // std::cout << "v[mm] =\n" << matrix>(v) << "\n"; -} - -void matrix_of_quantity_multiply_same() -{ - std::cout << "\nmatrix_of_quantity_multiply_same:\n"; - - matrix> v = {{1 * m, 2 * m, 3 * m}, {4 * m, 5 * m, 6 * m}, {7 * m, 8 * m, 9 * m}}; - vector> u = {3 * m, 2 * m, 1 * m}; - - std::cout << "v =\n" << v << "\n"; - std::cout << "u =\n" << u << "\n"; - - std::cout << "v * u =\n" << v * u << "\n"; - std::cout << "2 * m * u =\n" << 2. * m * u << "\n"; -} - -void matrix_of_quantity_multiply_different() -{ - std::cout << "\nmatrix_of_quantity_multiply_different:\n"; - - vector> v = {1 * N, 2 * N, 3 * N}; - matrix> u = {{1 * m, 2 * m, 3 * m}, {4 * m, 5 * m, 6 * m}, {7 * m, 8 * m, 9 * m}}; - - std::cout << "v =\n" << v << "\n"; - std::cout << "u =\n" << u << "\n"; - - std::cout << "v * u =\n" << v * u << "\n"; - std::cout << "2 * N * u =\n" << 2. * N * u << "\n"; - std::cout << "2 * u =\n" << 2 * u << "\n"; -} - -void matrix_of_quantity_divide_by_scalar() -{ - std::cout << "\nmatrix_of_quantity_divide_by_scalar:\n"; - - matrix> v = {{2 * m, 4 * m, 6 * m}, {4 * m, 6 * m, 8 * m}, {8 * m, 4 * m, 2 * m}}; - - std::cout << "v =\n" << v << "\n"; - - // TODO Uncomment when bug in the LA is fixed - // std::cout << "v / (2 * s) =\n" << v / (2 * s) << "\n"; - // std::cout << "v / 2 =\n" << v / 2 << "\n"; -} - -void matrix_of_quantity_tests() -{ - matrix_of_quantity_add(); - matrix_of_quantity_multiply_same(); - matrix_of_quantity_multiply_different(); - matrix_of_quantity_divide_by_scalar(); -} - -template -using length_v = quantity>; - -template -using force_v = quantity>; - void quantity_of_vector_add() { std::cout << "\nquantity_of_vector_add:\n"; - length_v<> v(vector<>{1, 2, 3}); - length_v<> u(vector<>{3, 2, 1}); - length_v> t(vector<>{3, 2, 1}); + // TODO Does not compile (LA bug) + // auto v = vector{1, 2, 3} * isq::position_vector[m]; + // auto u = vector{3, 2, 1} * isq::position_vector[m]; + // auto t = vector{3, 2, 1} * isq::position_vector[km]; + + // quantity> v{vector{1, 2, 3}}; // should not compile + quantity> v{vector{1, 2, 3}}; + quantity> u{vector{3, 2, 1}}; + quantity> t{vector{3, 2, 1}}; std::cout << "v = " << v << "\n"; std::cout << "u = " << u << "\n"; @@ -228,137 +141,310 @@ void quantity_of_vector_add() std::cout << "v + u = " << v + u << "\n"; std::cout << "v + t = " << v + t << "\n"; - std::cout << "t[m] = " << quantity_cast(t) << "\n"; } -void quantity_of_vector_multiply_same() +void quantity_of_vector_subtract() { - std::cout << "\nquantity_of_vector_multiply_same:\n"; + std::cout << "\nquantity_of_vector_subtract:\n"; - length_v<> v(vector<>{1, 2, 3}); - length_v<> u(vector<>{3, 2, 1}); + quantity> v{vector{1, 2, 3}}; + quantity> u{vector{3, 2, 1}}; + quantity> t{vector{3, 2, 1}}; std::cout << "v = " << v << "\n"; std::cout << "u = " << u << "\n"; + std::cout << "t = " << t << "\n"; - std::cout << "v * u = " << v * u << "\n"; - std::cout << "2 * m * v = " << 2. * m * v << "\n"; + std::cout << "v - u = " << v - u << "\n"; + std::cout << "v - t = " << v - t << "\n"; } -void quantity_of_vector_multiply_different() +void quantity_of_vector_divide_by_scalar_quantity() { - std::cout << "\nquantity_of_vector_multiply_different:\n"; + std::cout << "\nquantity_of_vector_divide_scalar:\n"; - force_v<> v(vector<>{1, 2, 3}); - length_v<> u(vector<>{3, 2, 1}); + quantity> pos{vector{30, 20, 10}}; + auto dur = 2 * isq::duration[h]; + quantity> v = pos / dur; + std::cout << "pos = " << pos << "\n"; + std::cout << "dur = " << dur << "\n"; + + std::cout << "pos / dur = " << pos / dur << "\n"; std::cout << "v = " << v << "\n"; - std::cout << "u = " << u << "\n"; - - std::cout << "v * u = " << v * u << "\n"; - std::cout << "2 * N * u = " << 2. * N * u << "\n"; - std::cout << "2 * u = " << 2 * u << "\n"; } -void quantity_of_vector_divide_by_scalar() -{ - std::cout << "\nquantity_of_vector_divide_by_scalar:\n"; - length_v<> v(vector<>{4, 8, 12}); +// void quantity_of_vector_multiply_same() +// { +// std::cout << "\nquantity_of_vector_multiply_same:\n"; - std::cout << "v = " << v << "\n"; +// length_v<> v(vector<>{1, 2, 3}); +// length_v<> u(vector<>{3, 2, 1}); - // TODO Uncomment when bug in the LA is fixed - // std::cout << "v / 2 * s = " << v / 2 * s << "\n"; - // std::cout << "v / 2 = " << v / 2 << "\n"; -} +// std::cout << "v = " << v << "\n"; +// std::cout << "u = " << u << "\n"; + +// std::cout << "v * u = " << v * u << "\n"; +// std::cout << "2 * m * v = " << 2. * m * v << "\n"; +// } + +// void quantity_of_vector_multiply_different() +// { +// std::cout << "\nquantity_of_vector_multiply_different:\n"; + +// force_v<> v(vector<>{1, 2, 3}); +// length_v<> u(vector<>{3, 2, 1}); + +// std::cout << "v = " << v << "\n"; +// std::cout << "u = " << u << "\n"; + +// std::cout << "v * u = " << v * u << "\n"; +// std::cout << "2 * N * u = " << 2. * N * u << "\n"; +// std::cout << "2 * u = " << 2 * u << "\n"; +// } + +// void quantity_of_vector_divide_by_scalar() +// { +// std::cout << "\nquantity_of_vector_divide_by_scalar:\n"; + +// length_v<> v(vector<>{4, 8, 12}); + +// std::cout << "v = " << v << "\n"; + +// // TODO Uncomment when bug in the LA is fixed +// // std::cout << "v / 2 * s = " << v / 2 * s << "\n"; +// // std::cout << "v / 2 = " << v / 2 << "\n"; +// } void quantity_of_vector_tests() { + quantity_of_vector_cast(); + quantity_of_vector_multiply_by_scalar_value(); + quantity_of_vector_divide_by_scalar_value(); quantity_of_vector_add(); - quantity_of_vector_multiply_same(); - quantity_of_vector_multiply_different(); - quantity_of_vector_divide_by_scalar(); + quantity_of_vector_subtract(); + quantity_of_vector_divide_by_scalar_quantity(); + // quantity_of_vector_multiply_same(); + // quantity_of_vector_multiply_different(); + // quantity_of_vector_divide_by_scalar(); } -template -using length_m = quantity>; +// template +// using length_m = quantity>; -void quantity_of_matrix_add() -{ - std::cout << "\nquantity_of_matrix_add:\n"; +// void quantity_of_matrix_add() +// { +// std::cout << "\nquantity_of_matrix_add:\n"; - length_m<> v(matrix<>{{1, 2, 3}, {4, 5, 6}, {7, 8, 9}}); - length_m<> u(matrix<>{{3, 2, 1}, {3, 2, 1}, {3, 2, 1}}); - length_m> t(matrix<>{{3, 2, 1}, {3, 2, 1}, {3, 2, 1}}); +// length_m<> v(matrix<>{{1, 2, 3}, {4, 5, 6}, {7, 8, 9}}); +// length_m<> u(matrix<>{{3, 2, 1}, {3, 2, 1}, {3, 2, 1}}); +// length_m> t(matrix<>{{3, 2, 1}, {3, 2, 1}, {3, 2, 1}}); - std::cout << "v =\n" << v << "\n"; - std::cout << "u =\n" << u << "\n"; - std::cout << "t =\n" << t << "\n"; +// std::cout << "v =\n" << v << "\n"; +// std::cout << "u =\n" << u << "\n"; +// std::cout << "t =\n" << t << "\n"; - std::cout << "v + u =\n" << v + u << "\n"; - std::cout << "v + t =\n" << v + t << "\n"; +// std::cout << "v + u =\n" << v + u << "\n"; +// std::cout << "v + t =\n" << v + t << "\n"; - // TODO Uncomment when fixed in the LA lib - // std::cout << "v[mm] =\n" << matrix>(v) << "\n"; -} +// // TODO Uncomment when fixed in the LA lib +// // std::cout << "v[mm] =\n" << matrix>(v) << "\n"; +// } -void quantity_of_matrix_multiply_same() -{ - std::cout << "\nquantity_of_matrix_multiply_same:\n"; +// void quantity_of_matrix_multiply_same() +// { +// std::cout << "\nquantity_of_matrix_multiply_same:\n"; - length_m<> v(matrix<>{{1, 2, 3}, {4, 5, 6}, {7, 8, 9}}); - length_v<> u(vector<>{3, 2, 1}); +// length_m<> v(matrix<>{{1, 2, 3}, {4, 5, 6}, {7, 8, 9}}); +// length_v<> u(vector<>{3, 2, 1}); - std::cout << "v =\n" << v << "\n"; - std::cout << "u =\n" << u << "\n"; +// std::cout << "v =\n" << v << "\n"; +// std::cout << "u =\n" << u << "\n"; - std::cout << "v * u =\n" << v * u << "\n"; - std::cout << "2 * m * u =\n" << 2. * m * u << "\n"; -} +// std::cout << "v * u =\n" << v * u << "\n"; +// std::cout << "2 * m * u =\n" << 2. * m * u << "\n"; +// } -void quantity_of_matrix_multiply_different() -{ - std::cout << "\nquantity_of_matrix_multiply_different:\n"; +// void quantity_of_matrix_multiply_different() +// { +// std::cout << "\nquantity_of_matrix_multiply_different:\n"; - force_v<> v(vector<>{1, 2, 3}); - length_m<> u(matrix<>{{1, 2, 3}, {4, 5, 6}, {7, 8, 9}}); +// force_v<> v(vector<>{1, 2, 3}); +// length_m<> u(matrix<>{{1, 2, 3}, {4, 5, 6}, {7, 8, 9}}); - std::cout << "v =\n" << v << "\n"; - std::cout << "u =\n" << u << "\n"; +// std::cout << "v =\n" << v << "\n"; +// std::cout << "u =\n" << u << "\n"; - std::cout << "v * u =\n" << v * u << "\n"; - std::cout << "2 * N * u =\n" << 2. * N * u << "\n"; - std::cout << "2 * u =\n" << 2 * u << "\n"; -} +// std::cout << "v * u =\n" << v * u << "\n"; +// std::cout << "2 * N * u =\n" << 2. * N * u << "\n"; +// std::cout << "2 * u =\n" << 2 * u << "\n"; +// } -void quantity_of_matrix_divide_by_scalar() -{ - std::cout << "\nquantity_of_matrix_divide_by_scalar:\n"; +// void quantity_of_matrix_divide_by_scalar() +// { +// std::cout << "\nquantity_of_matrix_divide_by_scalar:\n"; - length_m<> v(matrix<>{{2, 4, 6}, {4, 6, 8}, {8, 4, 2}}); +// length_m<> v(matrix<>{{2, 4, 6}, {4, 6, 8}, {8, 4, 2}}); - std::cout << "v =\n" << v << "\n"; +// std::cout << "v =\n" << v << "\n"; - // TODO Uncomment when bug in the LA is fixed - // std::cout << "v / (2 * s) =\n" << v / (2 * s) << "\n"; - // std::cout << "v / 2 =\n" << v / 2 << "\n"; -} +// // TODO Uncomment when bug in the LA is fixed +// // std::cout << "v / (2 * s) =\n" << v / (2 * s) << "\n"; +// // std::cout << "v / 2 =\n" << v / 2 << "\n"; +// } -void quantity_of_matrix_tests() -{ - quantity_of_matrix_add(); - quantity_of_matrix_multiply_same(); - quantity_of_matrix_multiply_different(); - quantity_of_matrix_divide_by_scalar(); -} +// void quantity_of_matrix_tests() +// { +// quantity_of_matrix_add(); +// quantity_of_matrix_multiply_same(); +// quantity_of_matrix_multiply_different(); +// quantity_of_matrix_divide_by_scalar(); +// } + + +// void vector_of_quantity_add() +// { +// std::cout << "\nvector_of_quantity_add:\n"; + +// vector> v = {1 * m, 2 * m, 3 * m}; +// vector> u = {3 * m, 2 * m, 1 * m}; +// vector> t = {3 * km, 2 * km, 1 * km}; + +// std::cout << "v = " << v << "\n"; +// std::cout << "u = " << u << "\n"; +// std::cout << "t = " << t << "\n"; + +// std::cout << "v + u = " << v + u << "\n"; +// std::cout << "v + t = " << v + t << "\n"; +// std::cout << "t[m] = " << vector>(t) << "\n"; +// } + +// void vector_of_quantity_multiply_same() +// { +// std::cout << "\nvector_of_quantity_multiply_same:\n"; + +// vector> v = {1 * m, 2 * m, 3 * m}; +// vector> u = {3 * m, 2 * m, 1 * m}; + +// std::cout << "v = " << v << "\n"; +// std::cout << "u = " << u << "\n"; + +// std::cout << "v * u = " << v * u << "\n"; +// std::cout << "2 * m * v = " << 2. * m * v << "\n"; +// } + +// void vector_of_quantity_multiply_different() +// { +// std::cout << "\nvector_of_quantity_multiply_different:\n"; + +// vector> v = {1 * N, 2 * N, 3 * N}; +// vector> u = {3 * m, 2 * m, 1 * m}; + +// std::cout << "v = " << v << "\n"; +// std::cout << "u = " << u << "\n"; + +// std::cout << "v * u = " << v * u << "\n"; +// std::cout << "2 * N * u = " << 2. * N * u << "\n"; +// std::cout << "2 * u = " << 2 * u << "\n"; +// } + +// void vector_of_quantity_divide_by_scalar() +// { +// std::cout << "\nvector_of_quantity_divide_by_scalar:\n"; + +// vector> v = {4 * m, 8 * m, 12 * m}; + +// std::cout << "v = " << v << "\n"; + +// // TODO Uncomment when bug in the LA is fixed +// // std::cout << "v / (2 * s) = " << v / (2 * s) << "\n"; +// // std::cout << "v / 2 = " << v / 2 << "\n"; +// } + +// void vector_of_quantity_tests() +// { +// vector_of_quantity_add(); +// vector_of_quantity_multiply_same(); +// vector_of_quantity_multiply_different(); +// vector_of_quantity_divide_by_scalar(); +// } + +// void matrix_of_quantity_add() +// { +// std::cout << "\nmatrix_of_quantity_add:\n"; + +// matrix> v = {{1 * m, 2 * m, 3 * m}, {4 * m, 5 * m, 6 * m}, {7 * m, 8 * m, 9 * m}}; +// matrix> u = {{3 * m, 2 * m, 1 * m}, {3 * m, 2 * m, 1 * m}, {3 * m, 2 * m, 1 * m}}; +// matrix> t = {{3 * mm, 2 * mm, 1 * mm}, {3 * mm, 2 * mm, 1 * mm}, {3 * mm, 2 * mm, 1 * mm}}; + +// std::cout << "v =\n" << v << "\n"; +// std::cout << "u =\n" << u << "\n"; +// std::cout << "t =\n" << t << "\n"; + +// std::cout << "v + u =\n" << v + u << "\n"; +// std::cout << "v + t =\n" << v + t << "\n"; + +// // TODO Uncomment when fixed in the LA lib +// // std::cout << "v[mm] =\n" << matrix>(v) << "\n"; +// } + +// void matrix_of_quantity_multiply_same() +// { +// std::cout << "\nmatrix_of_quantity_multiply_same:\n"; + +// matrix> v = {{1 * m, 2 * m, 3 * m}, {4 * m, 5 * m, 6 * m}, {7 * m, 8 * m, 9 * m}}; +// vector> u = {3 * m, 2 * m, 1 * m}; + +// std::cout << "v =\n" << v << "\n"; +// std::cout << "u =\n" << u << "\n"; + +// std::cout << "v * u =\n" << v * u << "\n"; +// std::cout << "2 * m * u =\n" << 2. * m * u << "\n"; +// } + +// void matrix_of_quantity_multiply_different() +// { +// std::cout << "\nmatrix_of_quantity_multiply_different:\n"; + +// vector> v = {1 * N, 2 * N, 3 * N}; +// matrix> u = {{1 * m, 2 * m, 3 * m}, {4 * m, 5 * m, 6 * m}, {7 * m, 8 * m, 9 * m}}; + +// std::cout << "v =\n" << v << "\n"; +// std::cout << "u =\n" << u << "\n"; + +// std::cout << "v * u =\n" << v * u << "\n"; +// std::cout << "2 * N * u =\n" << 2. * N * u << "\n"; +// std::cout << "2 * u =\n" << 2 * u << "\n"; +// } + +// void matrix_of_quantity_divide_by_scalar() +// { +// std::cout << "\nmatrix_of_quantity_divide_by_scalar:\n"; + +// matrix> v = {{2 * m, 4 * m, 6 * m}, {4 * m, 6 * m, 8 * m}, {8 * m, 4 * m, 2 * m}}; + +// std::cout << "v =\n" << v << "\n"; + +// // TODO Uncomment when bug in the LA is fixed +// // std::cout << "v / (2 * s) =\n" << v / (2 * s) << "\n"; +// // std::cout << "v / 2 =\n" << v / 2 << "\n"; +// } + +// void matrix_of_quantity_tests() +// { +// matrix_of_quantity_add(); +// matrix_of_quantity_multiply_same(); +// matrix_of_quantity_multiply_different(); +// matrix_of_quantity_divide_by_scalar(); +// } } // namespace int main() { - vector_of_quantity_tests(); - matrix_of_quantity_tests(); quantity_of_vector_tests(); - quantity_of_matrix_tests(); + // quantity_of_matrix_tests(); + // vector_of_quantity_tests(); + // matrix_of_quantity_tests(); } diff --git a/example/measurement.cpp b/example/measurement.cpp index c9fcef33..86c17e9c 100644 --- a/example/measurement.cpp +++ b/example/measurement.cpp @@ -20,10 +20,10 @@ // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE // SOFTWARE. -#include -#include -#include -#include +#include +#include +#include +#include #include #include #include @@ -118,18 +118,18 @@ private: } // namespace template -inline constexpr bool units::is_scalar> = true; +inline constexpr bool mp_units::is_scalar> = true; template -inline constexpr bool units::is_vector> = true; +inline constexpr bool mp_units::is_vector> = true; -static_assert(units::RepresentationOf, units::quantity_character::scalar>); +static_assert(mp_units::RepresentationOf, mp_units::quantity_character::scalar>); namespace { void example() { - using namespace units; - using namespace units::si::unit_symbols; + using namespace mp_units; + using namespace mp_units::si::unit_symbols; const auto a = isq::acceleration(measurement{9.8, 0.1}, m / s2); const auto t = isq::time(measurement{1.2, 0.1}, s); diff --git a/example/si_constants.cpp b/example/si_constants.cpp index cc5a782b..f020d371 100644 --- a/example/si_constants.cpp +++ b/example/si_constants.cpp @@ -20,19 +20,19 @@ // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE // SOFTWARE. -#include -#include -#include +#include +#include +#include #include template - requires units::is_scalar -inline constexpr bool units::is_vector = true; + requires mp_units::is_scalar +inline constexpr bool mp_units::is_vector = true; int main() { - using namespace units::si; - using namespace units::si::unit_symbols; + using namespace mp_units::si; + using namespace mp_units::si::unit_symbols; std::cout << "The seven defining constants of the SI and the seven corresponding units they define:\n"; std::cout << STD_FMT::format("- hyperfine transition frequency of Cs: {} = {:%.0Q %q}\n", diff --git a/example/strong_angular_quantities.cpp b/example/strong_angular_quantities.cpp index e08eab02..08c0814e 100644 --- a/example/strong_angular_quantities.cpp +++ b/example/strong_angular_quantities.cpp @@ -20,23 +20,23 @@ // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE // SOFTWARE. -#include -#include -#include -#include +#include +#include +#include +#include #include template - requires units::is_scalar -inline constexpr bool units::is_vector = true; + requires mp_units::is_scalar +inline constexpr bool mp_units::is_vector = true; int main() { - using namespace units; - using namespace units::si::unit_symbols; - using namespace units::angular::unit_symbols; - using units::angular::unit_symbols::deg; - using units::angular::unit_symbols::rad; + using namespace mp_units; + using namespace mp_units::si::unit_symbols; + using namespace mp_units::angular::unit_symbols; + using mp_units::angular::unit_symbols::deg; + using mp_units::angular::unit_symbols::rad; const auto lever = isq_angle::position_vector[cm](20); const auto force = isq_angle::force[N](500); diff --git a/example/total_energy.cpp b/example/total_energy.cpp index 77034388..dcec9e92 100644 --- a/example/total_energy.cpp +++ b/example/total_energy.cpp @@ -20,22 +20,22 @@ // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE // SOFTWARE. -#include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include +#include #include #include template - requires units::is_scalar -inline constexpr bool units::is_vector = true; + requires mp_units::is_scalar +inline constexpr bool mp_units::is_vector = true; namespace { -using namespace units; +using namespace mp_units; quantity_of auto total_energy(weak_quantity_of auto p, weak_quantity_of auto m, @@ -46,7 +46,7 @@ quantity_of auto total_energy(weak_quantity_of; constexpr quantity_of auto c = si::si2019::speed_of_light_in_vacuum(1.); @@ -85,8 +85,8 @@ void si_example() void natural_example() { - using namespace units::natural; - using namespace units::natural::unit_symbols; + using namespace mp_units::natural; + using namespace mp_units::natural::unit_symbols; constexpr quantity_of auto c = 1. * speed_of_light_in_vacuum; const quantity_of auto p = 4. * momentum[GeV]; diff --git a/src/core-fmt/CMakeLists.txt b/src/core-fmt/CMakeLists.txt index d88d23f4..64df15e3 100644 --- a/src/core-fmt/CMakeLists.txt +++ b/src/core-fmt/CMakeLists.txt @@ -25,7 +25,7 @@ cmake_minimum_required(VERSION 3.19) option(${projectPrefix}USE_LIBFMT "Enables usage of libfmt instead of the one from 'std'" ON) message(STATUS "${projectPrefix}USE_LIBFMT: ${${projectPrefix}USE_LIBFMT}") -add_units_module(core-fmt DEPENDENCIES mp-units::core HEADERS include/units/format.h) +add_units_module(core-fmt DEPENDENCIES mp-units::core HEADERS include/mp_units/format.h) target_compile_definitions(mp-units-core-fmt INTERFACE ${projectPrefix}USE_LIBFMT=$) if(${projectPrefix}USE_LIBFMT) diff --git a/src/core-fmt/include/units/bits/fmt.h b/src/core-fmt/include/mp_units/bits/fmt.h similarity index 97% rename from src/core-fmt/include/units/bits/fmt.h rename to src/core-fmt/include/mp_units/bits/fmt.h index 7c449306..8b921cdd 100644 --- a/src/core-fmt/include/units/bits/fmt.h +++ b/src/core-fmt/include/mp_units/bits/fmt.h @@ -28,14 +28,14 @@ // For the license information refer to format.h. #include -#include +#include #include #include #include // most of the below code is based on/copied from libfmt -namespace units::detail { +namespace mp_units::detail { struct auto_id {}; @@ -382,11 +382,11 @@ template S, typename SpecHandler> if (begin == end) return begin; - begin = ::units::detail::parse_align(begin, end, handler); + begin = ::mp_units::detail::parse_align(begin, end, handler); if (begin == end) return begin; // Parse sign. - begin = ::units::detail::parse_sign(begin, end, handler); + begin = ::mp_units::detail::parse_sign(begin, end, handler); if (begin == end) return begin; if (*begin == '#') { @@ -400,12 +400,12 @@ template S, typename SpecHandler> if (++begin == end) return begin; } - begin = ::units::detail::parse_width(begin, end, handler); + begin = ::mp_units::detail::parse_width(begin, end, handler); if (begin == end) return begin; // Parse precision. if (*begin == '.') { - begin = ::units::detail::parse_precision(begin, end, handler); + begin = ::mp_units::detail::parse_precision(begin, end, handler); if (begin == end) return begin; } @@ -465,4 +465,4 @@ private: ParseContext& context_; }; -} // namespace units::detail +} // namespace mp_units::detail diff --git a/src/core-fmt/include/units/bits/fmt_hacks.h b/src/core-fmt/include/mp_units/bits/fmt_hacks.h similarity index 97% rename from src/core-fmt/include/units/bits/fmt_hacks.h rename to src/core-fmt/include/mp_units/bits/fmt_hacks.h index a4db23f2..5e71760c 100644 --- a/src/core-fmt/include/units/bits/fmt_hacks.h +++ b/src/core-fmt/include/mp_units/bits/fmt_hacks.h @@ -27,7 +27,7 @@ // // For the license information refer to format.h. -#include +#include #ifndef UNITS_USE_LIBFMT #define UNITS_USE_LIBFMT 1 diff --git a/src/core-fmt/include/units/format.h b/src/core-fmt/include/mp_units/format.h similarity index 83% rename from src/core-fmt/include/units/format.h rename to src/core-fmt/include/mp_units/format.h index 04703db8..d956fac9 100644 --- a/src/core-fmt/include/units/format.h +++ b/src/core-fmt/include/mp_units/format.h @@ -22,11 +22,11 @@ #pragma once -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include #include // Grammar @@ -46,7 +46,7 @@ // units-unit-symbol-solidus ::= one of "oan" // units-unit-symbol-separator ::= one of "sd" -namespace units::detail { +namespace mp_units::detail { // Holds specs about the whole object template @@ -259,17 +259,17 @@ template S> return it; } -} // namespace units::detail +} // namespace mp_units::detail template -struct STD_FMT::formatter, CharT> { +struct STD_FMT::formatter, CharT> { private: - using quantity = units::quantity; + using quantity = mp_units::quantity; using iterator = TYPENAME STD_FMT::basic_format_parse_context::iterator; bool quantity_value = false; bool quantity_unit = false; - units::detail::quantity_format_specs specs; + mp_units::detail::quantity_format_specs specs; std::basic_string_view format_str; struct spec_handler { @@ -277,9 +277,9 @@ private: STD_FMT::basic_format_parse_context& context; constexpr void on_fill(std::basic_string_view fill) { f.specs.global.fill = fill; } - constexpr void on_align(units::detail::fmt_align align) { f.specs.global.align = align; } + constexpr void on_align(mp_units::detail::fmt_align align) { f.specs.global.align = align; } constexpr void on_width(int width) { f.specs.global.width = width; } - constexpr void on_sign(units::detail::fmt_sign sign) { f.specs.rep.sign = sign; } + constexpr void on_sign(mp_units::detail::fmt_sign sign) { f.specs.rep.sign = sign; } constexpr void on_hash() { f.specs.rep.alt = true; } constexpr void on_precision(int precision) { f.specs.rep.precision = precision; } constexpr void on_localized() { f.specs.rep.localized = true; } @@ -297,13 +297,13 @@ private: template constexpr void on_dynamic_width(T t) { - f.specs.global.dynamic_width_index = units::detail::on_dynamic_arg(t, context); + f.specs.global.dynamic_width_index = mp_units::detail::on_dynamic_arg(t, context); } template constexpr void on_dynamic_precision(T t) { - f.specs.rep.dynamic_precision_index = units::detail::on_dynamic_arg(t, context); + f.specs.rep.dynamic_precision_index = mp_units::detail::on_dynamic_arg(t, context); } template S> @@ -314,7 +314,7 @@ private: template S> constexpr void on_quantity_value(It begin, S end) { - if (begin != end) units::detail::parse_units_rep(begin, end, *this, units::treat_as_floating_point); + if (begin != end) mp_units::detail::parse_units_rep(begin, end, *this, mp_units::treat_as_floating_point); f.quantity_value = true; } @@ -329,29 +329,29 @@ private: throw STD_FMT::format_error("invalid unit modifier specified"); } - if (auto it = units::detail::at_most_one_of(begin, end, "UA"); it != end) { + if (auto it = mp_units::detail::at_most_one_of(begin, end, "UA"); it != end) { if (*it == 'U') - f.specs.unit.encoding = units::text_encoding::unicode; + f.specs.unit.encoding = mp_units::text_encoding::unicode; else - f.specs.unit.encoding = units::text_encoding::ascii; + f.specs.unit.encoding = mp_units::text_encoding::ascii; } - if (auto it = units::detail::at_most_one_of(begin, end, "oan"); it != end) { + if (auto it = mp_units::detail::at_most_one_of(begin, end, "oan"); it != end) { if (*it == 'o') - f.specs.unit.solidus = units::unit_symbol_solidus::one_denominator; + f.specs.unit.solidus = mp_units::unit_symbol_solidus::one_denominator; else if (*it == 'a') - f.specs.unit.solidus = units::unit_symbol_solidus::always; + f.specs.unit.solidus = mp_units::unit_symbol_solidus::always; else - f.specs.unit.solidus = units::unit_symbol_solidus::never; + f.specs.unit.solidus = mp_units::unit_symbol_solidus::never; } - if (auto it = units::detail::at_most_one_of(begin, end, "sd"); it != end) { + if (auto it = mp_units::detail::at_most_one_of(begin, end, "sd"); it != end) { if (*it == 's') - f.specs.unit.separator = units::unit_symbol_separator::space; + f.specs.unit.separator = mp_units::unit_symbol_separator::space; else { - if (f.specs.unit.encoding == units::text_encoding::ascii) + if (f.specs.unit.encoding == mp_units::text_encoding::ascii) throw STD_FMT::format_error("dot unit separator allowed only for Unicode encoding"); - f.specs.unit.separator = units::unit_symbol_separator::dot; + f.specs.unit.separator = mp_units::unit_symbol_separator::dot; } } @@ -370,19 +370,19 @@ private: spec_handler handler{*this, ctx}; // parse alignment - begin = units::detail::parse_align(begin, end, handler); + begin = mp_units::detail::parse_align(begin, end, handler); if (begin == end) return {begin, begin}; // parse width - begin = units::detail::parse_width(begin, end, handler); + begin = mp_units::detail::parse_width(begin, end, handler); if (begin == end) return {begin, begin}; // parse units-specific specification - end = units::detail::parse_units_format(begin, end, handler); + end = mp_units::detail::parse_units_format(begin, end, handler); - if (specs.global.align == units::detail::fmt_align::none && (!quantity_unit || quantity_value)) + if (specs.global.align == mp_units::detail::fmt_align::none && (!quantity_unit || quantity_value)) // quantity values should behave like numbers (by default aligned to right) - specs.global.align = units::detail::fmt_align::right; + specs.global.align = mp_units::detail::fmt_align::right; return {begin, end}; } @@ -395,15 +395,15 @@ private: if (begin == end || *begin == '}') { // default format should print value followed by the unit separated with 1 space - out = units::detail::format_units_quantity_value(out, q.number(), specs.rep, ctx.locale()); - if constexpr (!std::derived_from>) { + out = mp_units::detail::format_units_quantity_value(out, q.number(), specs.rep, ctx.locale()); + if constexpr (!std::derived_from>) { *out++ = CharT(' '); out = unit_symbol_to(out, Reference.unit); } } else { // user provided format - units::detail::quantity_formatter f(out, q, specs, ctx.locale()); - units::detail::parse_units_format(begin, end, f); + mp_units::detail::quantity_formatter f(out, q, specs, ctx.locale()); + mp_units::detail::parse_units_format(begin, end, f); } return out; } @@ -423,10 +423,10 @@ public: // process dynamic width and precision if (specs.global.dynamic_width_index >= 0) specs.global.width = - units::detail::get_dynamic_spec(specs.global.dynamic_width_index, ctx); + mp_units::detail::get_dynamic_spec(specs.global.dynamic_width_index, ctx); if (specs.rep.dynamic_precision_index >= 0) specs.rep.precision = - units::detail::get_dynamic_spec(specs.rep.dynamic_precision_index, ctx); + mp_units::detail::get_dynamic_spec(specs.rep.dynamic_precision_index, ctx); if (specs.global.width == 0) { // Avoid extra copying if width is not specified @@ -443,7 +443,7 @@ public: // In `global_format_buffer` we will create a global format string // e.g. "{:*^10%.1Q_%q}, 1.23_q_m" => "{:*^10}" std::basic_string global_format_buffer; - units::detail::format_global_buffer(std::back_inserter(global_format_buffer), specs.global); + mp_units::detail::format_global_buffer(std::back_inserter(global_format_buffer), specs.global); // Format the `quantity buffer` using specs from `global_format_buffer` // In the example, equivalent to STD_FMT::format("{:*^10}", "1.2_m") diff --git a/src/core-io/CMakeLists.txt b/src/core-io/CMakeLists.txt index de797acf..dadc1d2e 100644 --- a/src/core-io/CMakeLists.txt +++ b/src/core-io/CMakeLists.txt @@ -22,4 +22,4 @@ cmake_minimum_required(VERSION 3.19) -add_units_module(core-io DEPENDENCIES mp-units::core HEADERS include/units/quantity_io.h) +add_units_module(core-io DEPENDENCIES mp-units::core HEADERS include/mp_units/quantity_io.h) diff --git a/src/core-io/include/units/quantity_io.h b/src/core-io/include/mp_units/quantity_io.h similarity index 95% rename from src/core-io/include/units/quantity_io.h rename to src/core-io/include/mp_units/quantity_io.h index 8ff43e15..1aac4cde 100644 --- a/src/core-io/include/units/quantity_io.h +++ b/src/core-io/include/mp_units/quantity_io.h @@ -23,11 +23,11 @@ #pragma once -#include -#include +#include +#include #include -namespace units { +namespace mp_units { namespace detail { @@ -61,4 +61,4 @@ std::basic_ostream& operator<<(std::basic_ostream& return os; } -} // namespace units +} // namespace mp_units diff --git a/src/core/CMakeLists.txt b/src/core/CMakeLists.txt index 0e4ae547..cbb0fb5f 100644 --- a/src/core/CMakeLists.txt +++ b/src/core/CMakeLists.txt @@ -33,14 +33,14 @@ check_libcxx_in_use(${projectPrefix}LIBCXX) add_library( mp-units-core INTERFACE - include/units/customization_points.h - include/units/dimension.h - include/units/quantity.h - include/units/quantity_point.h - include/units/quantity_spec.h - include/units/reference.h - include/units/system_reference.h - include/units/unit.h + include/mp_units/customization_points.h + include/mp_units/dimension.h + include/mp_units/quantity.h + include/mp_units/quantity_point.h + include/mp_units/quantity_spec.h + include/mp_units/reference.h + include/mp_units/system_reference.h + include/mp_units/unit.h ) target_compile_features(mp-units-core INTERFACE cxx_std_20) target_link_libraries(mp-units-core INTERFACE gsl::gsl-lite) diff --git a/src/core/include/units/bits/algorithm.h b/src/core/include/mp_units/bits/algorithm.h similarity index 94% rename from src/core/include/units/bits/algorithm.h rename to src/core/include/mp_units/bits/algorithm.h index c8d730d9..0a9ce367 100644 --- a/src/core/include/units/bits/algorithm.h +++ b/src/core/include/mp_units/bits/algorithm.h @@ -22,13 +22,13 @@ #pragma once -#include // IWYU pragma: keep +#include // IWYU pragma: keep #include #include #include #include -namespace units::detail { +namespace mp_units::detail { // TODO refactor two below functions with std::ranges when moved to modules @@ -109,7 +109,7 @@ constexpr auto lexicographical_compare_three_way(I1 f1, I1 l1, I2 f2, I2 l2, Cmp template constexpr auto lexicographical_compare_three_way(I1 f1, I1 l1, I2 f2, I2 l2) { - return ::units::detail::lexicographical_compare_three_way(f1, l1, f2, l2, std::compare_three_way()); + return ::mp_units::detail::lexicographical_compare_three_way(f1, l1, f2, l2, std::compare_three_way()); } template @@ -169,8 +169,8 @@ template requires std::indirectly_copyable, O> constexpr copy_result, O> copy(R&& r, O result) { - return ::units::detail::copy(std::ranges::begin(r), std::ranges::end(r), std::move(result)); + return ::mp_units::detail::copy(std::ranges::begin(r), std::ranges::end(r), std::move(result)); } -} // namespace units::detail +} // namespace mp_units::detail diff --git a/src/core/include/units/bits/expression_template.h b/src/core/include/mp_units/bits/expression_template.h similarity index 99% rename from src/core/include/units/bits/expression_template.h rename to src/core/include/mp_units/bits/expression_template.h index a945d757..abb22eb9 100644 --- a/src/core/include/units/bits/expression_template.h +++ b/src/core/include/mp_units/bits/expression_template.h @@ -22,12 +22,12 @@ #pragma once -#include -#include -#include -#include +#include +#include +#include +#include -namespace units { +namespace mp_units { /** * @brief Type list type used by the expression template framework @@ -554,4 +554,4 @@ template typename Proj, template typename To, ty } // namespace detail -} // namespace units +} // namespace mp_units diff --git a/src/core/include/units/bits/external/fixed_string.h b/src/core/include/mp_units/bits/external/fixed_string.h similarity index 96% rename from src/core/include/units/bits/external/fixed_string.h rename to src/core/include/mp_units/bits/external/fixed_string.h index 25a7369a..ebb061f2 100644 --- a/src/core/include/units/bits/external/fixed_string.h +++ b/src/core/include/mp_units/bits/external/fixed_string.h @@ -22,9 +22,9 @@ #pragma once -#include // IWYU pragma: keep +#include // IWYU pragma: keep // TODO use when moved to C++20 modules (parsing takes too long for each translation unit) -#include +#include // IWYU pragma: begin_exports #include @@ -34,7 +34,7 @@ #include -namespace units { +namespace mp_units { /** * @brief A compile-time fixed string @@ -111,4 +111,4 @@ basic_fixed_string(CharT) -> basic_fixed_string; template using fixed_string = basic_fixed_string; -} // namespace units +} // namespace mp_units diff --git a/src/core/include/units/bits/external/hacks.h b/src/core/include/mp_units/bits/external/hacks.h similarity index 100% rename from src/core/include/units/bits/external/hacks.h rename to src/core/include/mp_units/bits/external/hacks.h diff --git a/src/core/include/units/bits/external/type_list.h b/src/core/include/mp_units/bits/external/type_list.h similarity index 98% rename from src/core/include/units/bits/external/type_list.h rename to src/core/include/mp_units/bits/external/type_list.h index ac99b80a..0e71645e 100644 --- a/src/core/include/units/bits/external/type_list.h +++ b/src/core/include/mp_units/bits/external/type_list.h @@ -22,14 +22,14 @@ #pragma once -#include // IWYU pragma: keep +#include // IWYU pragma: keep #include #include UNITS_DIAGNOSTIC_PUSH UNITS_DIAGNOSTIC_IGNORE_EXPR_ALWAYS_TF -namespace units { +namespace mp_units { namespace detail { @@ -294,6 +294,6 @@ struct type_list_sort_impl, Pred> { template typename Pred> using type_list_sort = TYPENAME detail::type_list_sort_impl::type; -} // namespace units +} // namespace mp_units UNITS_DIAGNOSTIC_POP diff --git a/src/core/include/units/bits/external/type_name.h b/src/core/include/mp_units/bits/external/type_name.h similarity index 100% rename from src/core/include/units/bits/external/type_name.h rename to src/core/include/mp_units/bits/external/type_name.h diff --git a/src/core/include/units/bits/external/type_traits.h b/src/core/include/mp_units/bits/external/type_traits.h similarity index 96% rename from src/core/include/units/bits/external/type_traits.h rename to src/core/include/mp_units/bits/external/type_traits.h index aa935255..ee896101 100644 --- a/src/core/include/units/bits/external/type_traits.h +++ b/src/core/include/mp_units/bits/external/type_traits.h @@ -22,11 +22,11 @@ #pragma once -#include +#include #include #include -namespace units { +namespace mp_units { // conditional namespace detail { @@ -80,4 +80,4 @@ concept is_derived_from_specialization_of = requires(T* t) { detail::to_base_spe template concept one_of = (false || ... || std::same_as); -} // namespace units +} // namespace mp_units diff --git a/src/core/include/units/bits/magnitude.h b/src/core/include/mp_units/bits/magnitude.h similarity index 98% rename from src/core/include/units/bits/magnitude.h rename to src/core/include/mp_units/bits/magnitude.h index 9a2b027a..cf913a82 100644 --- a/src/core/include/units/bits/magnitude.h +++ b/src/core/include/mp_units/bits/magnitude.h @@ -22,23 +22,23 @@ #pragma once -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include #include #include #include #include #include -namespace units { +namespace mp_units { namespace detail { @@ -844,4 +844,4 @@ template } } // namespace detail -} // namespace units +} // namespace mp_units diff --git a/src/core/include/units/bits/math_concepts.h b/src/core/include/mp_units/bits/math_concepts.h similarity index 95% rename from src/core/include/units/bits/math_concepts.h rename to src/core/include/mp_units/bits/math_concepts.h index 00d67490..80079220 100644 --- a/src/core/include/units/bits/math_concepts.h +++ b/src/core/include/mp_units/bits/math_concepts.h @@ -24,7 +24,7 @@ #include -namespace units::detail { +namespace mp_units::detail { template concept gt_zero = (N > 0); @@ -32,4 +32,4 @@ concept gt_zero = (N > 0); template concept non_zero = (N != 0); -} // namespace units::detail +} // namespace mp_units::detail diff --git a/src/core/include/units/bits/prime.h b/src/core/include/mp_units/bits/prime.h similarity index 98% rename from src/core/include/units/bits/prime.h rename to src/core/include/mp_units/bits/prime.h index 174cee4e..8c300e55 100644 --- a/src/core/include/units/bits/prime.h +++ b/src/core/include/mp_units/bits/prime.h @@ -22,7 +22,7 @@ #pragma once -#include +#include #include #include #include @@ -30,7 +30,7 @@ #include #include -namespace units::detail { +namespace mp_units::detail { [[nodiscard]] consteval bool is_prime_by_trial_division(std::uintmax_t n) { @@ -153,4 +153,4 @@ struct wheel_factorizer { [[nodiscard]] static consteval bool is_prime(std::size_t n) { return (n > 1) && find_first_factor(n) == n; } }; -} // namespace units::detail +} // namespace mp_units::detail diff --git a/src/core/include/units/bits/quantity_cast.h b/src/core/include/mp_units/bits/quantity_cast.h similarity index 90% rename from src/core/include/units/bits/quantity_cast.h rename to src/core/include/mp_units/bits/quantity_cast.h index 6424d87a..70d5874e 100644 --- a/src/core/include/units/bits/quantity_cast.h +++ b/src/core/include/mp_units/bits/quantity_cast.h @@ -22,19 +22,19 @@ #pragma once -#include -#include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include +#include +#include UNITS_DIAGNOSTIC_PUSH // warning C4244: 'argument': conversion from 'intmax_t' to 'T', possible loss of data with T=int UNITS_DIAGNOSTIC_IGNORE_LOSS_OF_DATA -namespace units { +namespace mp_units { template Rep> class quantity; @@ -188,11 +188,11 @@ template // * // * This cast gets the target quantity point type to cast to or anything that works for quantity_cast. For example: // * -// * auto q1 = units::quantity_point_cast(quantity_point{1_q_ms}); -// * auto q1 = units::quantity_point_cast>(quantity_point{1_q_ms}); -// * auto q1 = units::quantity_point_cast(quantity_point{200_q_Gal}); -// * auto q1 = units::quantity_point_cast(quantity_point{1_q_ms}); -// * auto q1 = units::quantity_point_cast(quantity_point{1_q_ms}); +// * auto q1 = mp_units::quantity_point_cast(quantity_point{1_q_ms}); +// * auto q1 = mp_units::quantity_point_cast>(quantity_point{1_q_ms}); +// * auto q1 = mp_units::quantity_point_cast(quantity_point{200_q_Gal}); +// * auto q1 = mp_units::quantity_point_cast(quantity_point{1_q_ms}); +// * auto q1 = mp_units::quantity_point_cast(quantity_point{1_q_ms}); // * // * @tparam CastSpec a target quantity point type to cast to or anything that works for quantity_cast // */ @@ -219,7 +219,7 @@ template // * // * This cast gets both the target dimension and unit to cast to. For example: // * -// * auto q1 = units::quantity_point_cast(v1); +// * auto q1 = mp_units::quantity_point_cast(v1); // * // * @note This cast is especially useful when working with quantity points of unknown dimensions // * (@c unknown_dimension). @@ -234,6 +234,6 @@ template // return quantity_point_cast, ToU, Rep>>(q); // } -} // namespace units +} // namespace mp_units UNITS_DIAGNOSTIC_POP diff --git a/src/core/include/units/bits/quantity_concepts.h b/src/core/include/mp_units/bits/quantity_concepts.h similarity index 97% rename from src/core/include/units/bits/quantity_concepts.h rename to src/core/include/mp_units/bits/quantity_concepts.h index de6d7267..e5b82521 100644 --- a/src/core/include/units/bits/quantity_concepts.h +++ b/src/core/include/mp_units/bits/quantity_concepts.h @@ -22,12 +22,12 @@ #pragma once -#include -#include -#include -#include +#include +#include +#include +#include -namespace units { +namespace mp_units { /** * @brief Quantity character @@ -243,4 +243,4 @@ concept quantity_point_like = requires(T q) { decltype(quantity_point_like_traits::relative(q))>; }; -} // namespace units +} // namespace mp_units diff --git a/src/core/include/units/bits/ratio.h b/src/core/include/mp_units/bits/ratio.h similarity index 96% rename from src/core/include/units/bits/ratio.h rename to src/core/include/mp_units/bits/ratio.h index 7b045de3..48e79a52 100644 --- a/src/core/include/units/bits/ratio.h +++ b/src/core/include/mp_units/bits/ratio.h @@ -23,8 +23,8 @@ #pragma once // IWYU pragma: begin_exports -#include -#include +#include +#include #include // IWYU pragma: end_exports @@ -33,7 +33,7 @@ #include #include -namespace units { +namespace mp_units { struct ratio; constexpr ratio inverse(const ratio& r); @@ -89,4 +89,4 @@ struct ratio { return ratio(res[0], res[1]); } -} // namespace units +} // namespace mp_units diff --git a/src/core/include/units/bits/ratio_maths.h b/src/core/include/mp_units/bits/ratio_maths.h similarity index 98% rename from src/core/include/units/bits/ratio_maths.h rename to src/core/include/mp_units/bits/ratio_maths.h index a6cbea4c..64d60db2 100644 --- a/src/core/include/units/bits/ratio_maths.h +++ b/src/core/include/mp_units/bits/ratio_maths.h @@ -31,7 +31,7 @@ #include #include -namespace units::detail { +namespace mp_units::detail { template [[nodiscard]] constexpr T abs(T v) noexcept @@ -92,4 +92,4 @@ constexpr void normalize(std::intmax_t& num, std::intmax_t& den) return lhs * rhs; } -} // namespace units::detail +} // namespace mp_units::detail diff --git a/src/core/include/units/bits/symbol_text.h b/src/core/include/mp_units/bits/symbol_text.h similarity index 98% rename from src/core/include/units/bits/symbol_text.h rename to src/core/include/mp_units/bits/symbol_text.h index eaef22b4..74c78e1c 100644 --- a/src/core/include/units/bits/symbol_text.h +++ b/src/core/include/mp_units/bits/symbol_text.h @@ -23,8 +23,8 @@ #pragma once // IWYU pragma: begin_exports -#include -#include +#include +#include #include #include #include @@ -32,7 +32,7 @@ #include -namespace units { +namespace mp_units { namespace detail { @@ -185,4 +185,4 @@ template basic_symbol_text(const basic_fixed_string&, const basic_fixed_string&) -> basic_symbol_text; -} // namespace units +} // namespace mp_units diff --git a/src/core/include/units/bits/text_tools.h b/src/core/include/mp_units/bits/text_tools.h similarity index 95% rename from src/core/include/units/bits/text_tools.h rename to src/core/include/mp_units/bits/text_tools.h index 036caeb7..d561929a 100644 --- a/src/core/include/units/bits/text_tools.h +++ b/src/core/include/mp_units/bits/text_tools.h @@ -22,10 +22,10 @@ #pragma once -#include -#include +#include +#include -namespace units::detail { +namespace mp_units::detail { template requires(0 <= Value) && (Value < 10) @@ -84,4 +84,4 @@ template return regular() + regular(); } -} // namespace units::detail +} // namespace mp_units::detail diff --git a/src/core/include/units/customization_points.h b/src/core/include/mp_units/customization_points.h similarity index 93% rename from src/core/include/units/customization_points.h rename to src/core/include/mp_units/customization_points.h index 7df6b4f9..22c38b5b 100644 --- a/src/core/include/units/customization_points.h +++ b/src/core/include/mp_units/customization_points.h @@ -22,12 +22,12 @@ #pragma once -#include -#include +#include +#include #include #include -namespace units { +namespace mp_units { /** * @brief Specifies if a value of a type should be treated as a floating-point value @@ -64,8 +64,8 @@ inline constexpr bool is_scalar = std::is_floating_point_v || (std::is_inte * * @code{.cpp} * template - * requires units::is_scalar - * inline constexpr bool units::is_vector = true; + * requires mp_units::is_scalar + * inline constexpr bool mp_units::is_vector = true; * @endcode */ template @@ -85,7 +85,7 @@ inline constexpr bool is_tensor = false; /** * @brief A type trait that defines zero, one, min, and max for a representation type * - * The zero, one, min, and max member functions in units::quantity forward their work to + * The zero, one, min, and max member functions in mp_units::quantity forward their work to * these methods. This type can be specialized if the representation Rep requires a specific * implementation to return these quantity objects. * @@ -153,4 +153,4 @@ struct quantity_like_traits; template struct quantity_point_like_traits; -} // namespace units +} // namespace mp_units diff --git a/src/core/include/units/dimension.h b/src/core/include/mp_units/dimension.h similarity index 98% rename from src/core/include/units/dimension.h rename to src/core/include/mp_units/dimension.h index 167294be..3ec8bfd1 100644 --- a/src/core/include/units/dimension.h +++ b/src/core/include/mp_units/dimension.h @@ -22,11 +22,11 @@ #pragma once -#include -#include -#include +#include +#include +#include -namespace units { +namespace mp_units { /** * @brief A dimension of a base quantity @@ -256,4 +256,4 @@ template // TODO consider adding the support for text output of the dimensional equation -} // namespace units +} // namespace mp_units diff --git a/src/core/include/units/quantity.h b/src/core/include/mp_units/quantity.h similarity index 92% rename from src/core/include/units/quantity.h rename to src/core/include/mp_units/quantity.h index 23db892a..11700992 100644 --- a/src/core/include/units/quantity.h +++ b/src/core/include/mp_units/quantity.h @@ -23,19 +23,19 @@ #pragma once -#include -#include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include +#include +#include #include // IWYU pragma: end_exports #include -namespace units { +namespace mp_units { namespace detail { @@ -153,10 +153,10 @@ public: #endif template - requires quantity_convertible_to_{}, Rep>> - [[nodiscard]] constexpr quantity<::units::reference{}, Rep> operator[](U) const + requires quantity_convertible_to_{}, Rep>> + [[nodiscard]] constexpr quantity<::mp_units::reference{}, Rep> operator[](U) const { - return quantity<::units::reference{}, Rep>{*this}; + return quantity<::mp_units::reference{}, Rep>{*this}; } // member unary operators @@ -337,44 +337,44 @@ public: [[nodiscard]] friend constexpr Quantity auto operator+(const quantity& lhs, const Value& rhs) requires requires { // TODO: Simplify when Clang catches up. requires !Quantity; - requires unit == ::units::one; + requires unit == ::mp_units::one; requires invoke_result_of_, rep, Value>; } { - return ::units::quantity(lhs.number() + rhs); + return ::mp_units::quantity(lhs.number() + rhs); } template [[nodiscard]] friend constexpr Quantity auto operator+(const Value& lhs, const quantity& rhs) requires requires { // TODO: Simplify when Clang catches up. requires !Quantity; - requires unit == ::units::one; + requires unit == ::mp_units::one; requires invoke_result_of_, Value, rep>; } { - return ::units::quantity(lhs + rhs.number()); + return ::mp_units::quantity(lhs + rhs.number()); } template [[nodiscard]] friend constexpr Quantity auto operator-(const quantity& lhs, const Value& rhs) requires requires { // TODO: Simplify when Clang catches up. requires !Quantity; - requires unit == ::units::one; + requires unit == ::mp_units::one; requires invoke_result_of_, rep, Value>; } { - return ::units::quantity(lhs.number() - rhs); + return ::mp_units::quantity(lhs.number() - rhs); } template [[nodiscard]] friend constexpr Quantity auto operator-(const Value& lhs, const quantity& rhs) requires requires { // TODO: Simplify when Clang catches up. requires !Quantity; - requires unit == ::units::one; + requires unit == ::mp_units::one; requires invoke_result_of_, Value, rep>; } { - return ::units::quantity(lhs - rhs.number()); + return ::mp_units::quantity(lhs - rhs.number()); } template @@ -406,7 +406,7 @@ public: requires(!Quantity) && invoke_result_of_, const Value&, rep> [[nodiscard]] friend constexpr Quantity auto operator/(const Value& v, const quantity& q) { - return (dimensionless[::units::one] / reference)(v / q.number()); + return (dimensionless[::mp_units::one] / reference)(v / q.number()); } template @@ -444,7 +444,7 @@ public: template explicit(false) quantity(quantity) -> quantity; -template Rep> +template Rep> explicit(false) quantity(Rep) -> quantity; #if !UNITS_COMP_CLANG || UNITS_COMP_CLANG > 16 @@ -524,21 +524,21 @@ template return quantity_cast(lhs).number() == quantity_cast(rhs).number(); } -} // namespace units +} // namespace mp_units namespace std { -template +template requires requires { { - units::common_reference(Q1::reference, Q2::reference) - } -> units::Reference; + mp_units::common_reference(Q1::reference, Q2::reference) + } -> mp_units::Reference; typename common_type_t; } struct common_type { public: - using type = units::quantity>; + using type = mp_units::quantity>; }; } // namespace std diff --git a/src/core/include/units/quantity_point.h b/src/core/include/mp_units/quantity_point.h similarity index 98% rename from src/core/include/units/quantity_point.h rename to src/core/include/mp_units/quantity_point.h index 809e21bb..73a91ea2 100644 --- a/src/core/include/units/quantity_point.h +++ b/src/core/include/mp_units/quantity_point.h @@ -23,11 +23,11 @@ #pragma once -#include -#include +#include +#include #include -namespace units { +namespace mp_units { namespace detail { @@ -234,4 +234,4 @@ explicit quantity_point(QP) -> quantity_point::reference, quantity_point_like_traits::point_origin, typename quantity_point_like_traits::rep>; -} // namespace units +} // namespace mp_units diff --git a/src/core/include/units/quantity_spec.h b/src/core/include/mp_units/quantity_spec.h similarity index 97% rename from src/core/include/units/quantity_spec.h rename to src/core/include/mp_units/quantity_spec.h index a84cfcb1..53461df7 100644 --- a/src/core/include/units/quantity_spec.h +++ b/src/core/include/mp_units/quantity_spec.h @@ -22,16 +22,16 @@ #pragma once -#include -#include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include +#include +#include #include -namespace units { +namespace mp_units { namespace detail { @@ -381,14 +381,14 @@ struct quantity_spec : std::remove_const_t { #ifdef __cpp_explicit_this_parameter -#define QUANTITY_SPEC(name, ...) \ - inline constexpr struct name : ::units::quantity_spec<##__VA_ARGS__> { \ +#define QUANTITY_SPEC(name, ...) \ + inline constexpr struct name : ::mp_units::quantity_spec<##__VA_ARGS__> { \ } name #else -#define QUANTITY_SPEC(name, ...) \ - inline constexpr struct name : ::units::quantity_spec { \ +#define QUANTITY_SPEC(name, ...) \ + inline constexpr struct name : ::mp_units::quantity_spec { \ } name #endif @@ -503,4 +503,4 @@ template detail::type_list_of_quantity_spec_less>(q); } -} // namespace units +} // namespace mp_units diff --git a/src/core/include/units/reference.h b/src/core/include/mp_units/reference.h similarity index 97% rename from src/core/include/units/reference.h rename to src/core/include/mp_units/reference.h index 626d7524..c7e3dadd 100644 --- a/src/core/include/units/reference.h +++ b/src/core/include/mp_units/reference.h @@ -22,10 +22,10 @@ #pragma once -#include -#include +#include +#include -namespace units { +namespace mp_units { /** * @brief Quantity reference type @@ -109,4 +109,4 @@ template common_unit(r1.unit, r2.unit, rest.unit...)>{}; } -} // namespace units +} // namespace mp_units diff --git a/src/core/include/units/system_reference.h b/src/core/include/mp_units/system_reference.h similarity index 95% rename from src/core/include/units/system_reference.h rename to src/core/include/mp_units/system_reference.h index 539b1e02..78b83ff7 100644 --- a/src/core/include/units/system_reference.h +++ b/src/core/include/mp_units/system_reference.h @@ -22,11 +22,11 @@ #pragma once -#include -#include -#include +#include +#include +#include -namespace units { +namespace mp_units { /** * @brief System-specific reference @@ -69,4 +69,4 @@ struct system_reference { } }; -} // namespace units +} // namespace mp_units diff --git a/src/core/include/units/unit.h b/src/core/include/mp_units/unit.h similarity index 98% rename from src/core/include/units/unit.h rename to src/core/include/mp_units/unit.h index 33f551e1..39726c17 100644 --- a/src/core/include/units/unit.h +++ b/src/core/include/mp_units/unit.h @@ -22,20 +22,20 @@ #pragma once -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include #include #include -namespace units { +namespace mp_units { #ifdef __cpp_explicit_this_parameter template @@ -483,7 +483,7 @@ template template [[nodiscard]] consteval auto get_canonical_unit_impl(const power&, const type_list&) { - auto mag = (units::mag<1> * ... * pow(get_canonical_unit_impl(Us{}, Us{}).mag)); + auto mag = (mp_units::mag<1> * ... * pow(get_canonical_unit_impl(Us{}, Us{}).mag)); auto u = (one * ... * pow(get_canonical_unit_impl(Us{}, Us{}).reference_unit)); return canonical_unit{mag, u}; } @@ -506,7 +506,7 @@ template template [[nodiscard]] consteval auto get_canonical_unit_impl(const type_list&) { - auto mag = (units::mag<1> * ... * get_canonical_unit_impl(Us{}, Us{}).mag); + auto mag = (mp_units::mag<1> * ... * get_canonical_unit_impl(Us{}, Us{}).mag); auto u = (one * ... * get_canonical_unit_impl(Us{}, Us{}).reference_unit); return canonical_unit{mag, u}; } @@ -564,7 +564,7 @@ using type_list_of_unit_less = expr_less; template [[nodiscard]] consteval Unit auto operator*(M mag, const U u) { - if constexpr (mag == units::mag<1>) + if constexpr (mag == mp_units::mag<1>) return u; else return scaled_unit{}; @@ -923,4 +923,4 @@ template return buffer; } -} // namespace units +} // namespace mp_units diff --git a/src/systems/angular/CMakeLists.txt b/src/systems/angular/CMakeLists.txt index 0cb3f2cc..18449e7f 100644 --- a/src/systems/angular/CMakeLists.txt +++ b/src/systems/angular/CMakeLists.txt @@ -22,4 +22,4 @@ cmake_minimum_required(VERSION 3.19) -add_units_module(angular DEPENDENCIES mp-units::isq HEADERS include/units/systems/angular/angular.h) +add_units_module(angular DEPENDENCIES mp-units::isq HEADERS include/mp_units/systems/angular/angular.h) diff --git a/src/systems/angular/include/units/systems/angular/angular.h b/src/systems/angular/include/mp_units/systems/angular/angular.h similarity index 93% rename from src/systems/angular/include/units/systems/angular/angular.h rename to src/systems/angular/include/mp_units/systems/angular/angular.h index a6ddd43f..f3126b5d 100644 --- a/src/systems/angular/include/units/systems/angular/angular.h +++ b/src/systems/angular/include/mp_units/systems/angular/angular.h @@ -22,11 +22,11 @@ #pragma once -#include -#include -#include +#include +#include +#include -namespace units::angular { +namespace mp_units::angular { // clang-format off inline constexpr struct dim_angle : base_dimension<"A"> {} dim_angle; @@ -52,4 +52,4 @@ inline constexpr auto deg2 = square; } // namespace unit_symbols -} // namespace units::angular +} // namespace mp_units::angular diff --git a/src/systems/cgs/CMakeLists.txt b/src/systems/cgs/CMakeLists.txt index 31a6964d..008c2cfb 100644 --- a/src/systems/cgs/CMakeLists.txt +++ b/src/systems/cgs/CMakeLists.txt @@ -22,4 +22,4 @@ cmake_minimum_required(VERSION 3.19) -add_units_module(cgs DEPENDENCIES mp-units::si HEADERS include/units/systems/cgs/cgs.h) +add_units_module(cgs DEPENDENCIES mp-units::si HEADERS include/mp_units/systems/cgs/cgs.h) diff --git a/src/systems/cgs/include/units/systems/cgs/cgs.h b/src/systems/cgs/include/mp_units/systems/cgs/cgs.h similarity index 95% rename from src/systems/cgs/include/units/systems/cgs/cgs.h rename to src/systems/cgs/include/mp_units/systems/cgs/cgs.h index df81e3fa..ff681f28 100644 --- a/src/systems/cgs/include/units/systems/cgs/cgs.h +++ b/src/systems/cgs/include/mp_units/systems/cgs/cgs.h @@ -22,10 +22,10 @@ #pragma once -#include -#include +#include +#include -namespace units::cgs { +namespace mp_units::cgs { // clang-format off inline constexpr struct centimetre : decltype(si::centi) {} centimetre; @@ -53,4 +53,4 @@ inline constexpr auto St = stokes; } // namespace unit_symbols -} // namespace units::cgs +} // namespace mp_units::cgs diff --git a/src/systems/hep/CMakeLists.txt b/src/systems/hep/CMakeLists.txt index 14ab6df3..75224f1c 100644 --- a/src/systems/hep/CMakeLists.txt +++ b/src/systems/hep/CMakeLists.txt @@ -22,4 +22,4 @@ cmake_minimum_required(VERSION 3.19) -add_units_module(hep DEPENDENCIES mp-units::si HEADERS include/units/systems/hep/hep.h) +add_units_module(hep DEPENDENCIES mp-units::si HEADERS include/mp_units/systems/hep/hep.h) diff --git a/src/systems/hep/include/units/systems/hep/hep.h b/src/systems/hep/include/mp_units/systems/hep/hep.h similarity index 97% rename from src/systems/hep/include/units/systems/hep/hep.h rename to src/systems/hep/include/mp_units/systems/hep/hep.h index c57158ac..2bd49cc3 100644 --- a/src/systems/hep/include/units/systems/hep/hep.h +++ b/src/systems/hep/include/mp_units/systems/hep/hep.h @@ -22,10 +22,10 @@ #pragma once -#include -#include +#include +#include -namespace units::hep { +namespace mp_units::hep { // energy using si::electronvolt; @@ -88,4 +88,4 @@ inline constexpr auto c2 = square; } // namespace unit_symbols -} // namespace units::hep +} // namespace mp_units::hep diff --git a/src/systems/iau/CMakeLists.txt b/src/systems/iau/CMakeLists.txt index edd95a2b..e890dbe7 100644 --- a/src/systems/iau/CMakeLists.txt +++ b/src/systems/iau/CMakeLists.txt @@ -22,6 +22,4 @@ cmake_minimum_required(VERSION 3.19) -add_units_module( - iau DEPENDENCIES mp-units::si HEADERS include/units/systems/iau/iau.h -) +add_units_module(iau DEPENDENCIES mp-units::si HEADERS include/mp_units/systems/iau/iau.h) diff --git a/src/systems/iau/include/units/systems/iau/iau.h b/src/systems/iau/include/mp_units/systems/iau/iau.h similarity index 96% rename from src/systems/iau/include/units/systems/iau/iau.h rename to src/systems/iau/include/mp_units/systems/iau/iau.h index 87b1f447..86d54016 100644 --- a/src/systems/iau/include/units/systems/iau/iau.h +++ b/src/systems/iau/include/mp_units/systems/iau/iau.h @@ -22,10 +22,10 @@ #pragma once -#include -#include +#include +#include -namespace units::iau { +namespace mp_units::iau { // https://en.wikipedia.org/wiki/Astronomical_system_of_units @@ -79,4 +79,4 @@ inline constexpr auto c_0 = speed_of_light_unit; } // namespace unit_symbols -} // namespace units::iau +} // namespace mp_units::iau diff --git a/src/systems/iec80000/CMakeLists.txt b/src/systems/iec80000/CMakeLists.txt index 55afba34..d88cc588 100644 --- a/src/systems/iec80000/CMakeLists.txt +++ b/src/systems/iec80000/CMakeLists.txt @@ -23,7 +23,9 @@ cmake_minimum_required(VERSION 3.19) add_units_module( - iec80000 DEPENDENCIES mp-units::isq mp-units::si - HEADERS include/units/systems/iec80000/binary_prefixes.h include/units/systems/iec80000/quantities.h - include/units/systems/iec80000/iec80000.h include/units/systems/iec80000/unit_symbols.h include/units/systems/iec80000/units.h + iec80000 + DEPENDENCIES mp-units::isq mp-units::si + HEADERS include/mp_units/systems/iec80000/binary_prefixes.h include/mp_units/systems/iec80000/quantities.h + include/mp_units/systems/iec80000/iec80000.h include/mp_units/systems/iec80000/unit_symbols.h + include/mp_units/systems/iec80000/units.h ) diff --git a/src/systems/iec80000/include/units/systems/iec80000/binary_prefixes.h b/src/systems/iec80000/include/mp_units/systems/iec80000/binary_prefixes.h similarity index 96% rename from src/systems/iec80000/include/units/systems/iec80000/binary_prefixes.h rename to src/systems/iec80000/include/mp_units/systems/iec80000/binary_prefixes.h index 9e0fd08a..90c9a4cf 100644 --- a/src/systems/iec80000/include/units/systems/iec80000/binary_prefixes.h +++ b/src/systems/iec80000/include/mp_units/systems/iec80000/binary_prefixes.h @@ -22,9 +22,9 @@ #pragma once -#include +#include -namespace units::iec80000 { +namespace mp_units::iec80000 { // clang-format off template struct kibi_ : prefixed_unit<"Ki", mag_power<2, 10>, U> {}; @@ -46,4 +46,4 @@ template inline constexpr zebi_ zebi; template inline constexpr yobi_ yobi; // clang-format on -} // namespace units::iec80000 +} // namespace mp_units::iec80000 diff --git a/src/systems/iec80000/include/units/systems/iec80000/iec80000.h b/src/systems/iec80000/include/mp_units/systems/iec80000/iec80000.h similarity index 85% rename from src/systems/iec80000/include/units/systems/iec80000/iec80000.h rename to src/systems/iec80000/include/mp_units/systems/iec80000/iec80000.h index 702d71c4..4ea1b712 100644 --- a/src/systems/iec80000/include/units/systems/iec80000/iec80000.h +++ b/src/systems/iec80000/include/mp_units/systems/iec80000/iec80000.h @@ -23,8 +23,8 @@ #pragma once // IWYU pragma: begin_exports -#include -#include -#include -#include +#include +#include +#include +#include // IWYU pragma: end_exports diff --git a/src/systems/iec80000/include/units/systems/iec80000/quantities.h b/src/systems/iec80000/include/mp_units/systems/iec80000/quantities.h similarity index 93% rename from src/systems/iec80000/include/units/systems/iec80000/quantities.h rename to src/systems/iec80000/include/mp_units/systems/iec80000/quantities.h index 7bd8fb2c..8af564ee 100644 --- a/src/systems/iec80000/include/units/systems/iec80000/quantities.h +++ b/src/systems/iec80000/include/mp_units/systems/iec80000/quantities.h @@ -22,12 +22,12 @@ #pragma once -#include -#include -#include -#include +#include +#include +#include +#include -namespace units::iec80000 { +namespace mp_units::iec80000 { // clang-format off inline constexpr struct dim_traffic_intensity : base_dimension<"A"> {} dim_traffic_intensity; @@ -69,4 +69,4 @@ QUANTITY_SPEC(decision_content, dimensionless); // TODO how to model information_content and the following quantities??? // QUANTITY_SPEC(information_content, ...); -} // namespace units::iec80000 +} // namespace mp_units::iec80000 diff --git a/src/systems/iec80000/include/units/systems/iec80000/unit_symbols.h b/src/systems/iec80000/include/mp_units/systems/iec80000/unit_symbols.h similarity index 93% rename from src/systems/iec80000/include/units/systems/iec80000/unit_symbols.h rename to src/systems/iec80000/include/mp_units/systems/iec80000/unit_symbols.h index d96f19b8..ee5dddf3 100644 --- a/src/systems/iec80000/include/units/systems/iec80000/unit_symbols.h +++ b/src/systems/iec80000/include/mp_units/systems/iec80000/unit_symbols.h @@ -22,11 +22,11 @@ #pragma once -#include -#include -#include +#include +#include +#include -namespace units::iec80000::unit_symbols { +namespace mp_units::iec80000::unit_symbols { // bit inline constexpr auto kbit = si::kilo; @@ -98,4 +98,4 @@ inline constexpr auto YBd = si::yotta; // TODO do we need prefixed versions of Erlang? inline constexpr auto E = erlang; -} // namespace units::iec80000::unit_symbols +} // namespace mp_units::iec80000::unit_symbols diff --git a/src/systems/iec80000/include/units/systems/iec80000/units.h b/src/systems/iec80000/include/mp_units/systems/iec80000/units.h similarity index 89% rename from src/systems/iec80000/include/units/systems/iec80000/units.h rename to src/systems/iec80000/include/mp_units/systems/iec80000/units.h index 3aa40b12..f65bee09 100644 --- a/src/systems/iec80000/include/units/systems/iec80000/units.h +++ b/src/systems/iec80000/include/mp_units/systems/iec80000/units.h @@ -22,11 +22,11 @@ #pragma once -#include -#include -#include +#include +#include +#include -namespace units::iec80000 { +namespace mp_units::iec80000 { // clang-format off inline constexpr struct erlang : named_unit<"E", traffic_intensity> {} erlang; @@ -36,4 +36,4 @@ inline constexpr struct byte : named_unit<"B", mag<8> * bit> {} byte; inline constexpr struct baud : named_unit<"Bd", 1 / si::second> {} baud; // clang-format on -} // namespace units::iec80000 +} // namespace mp_units::iec80000 diff --git a/src/systems/imperial/CMakeLists.txt b/src/systems/imperial/CMakeLists.txt index 2915d6b5..247ade0d 100644 --- a/src/systems/imperial/CMakeLists.txt +++ b/src/systems/imperial/CMakeLists.txt @@ -22,4 +22,6 @@ cmake_minimum_required(VERSION 3.19) -add_units_module(imperial DEPENDENCIES mp-units::si mp-units::international HEADERS include/units/systems/imperial/imperial.h) +add_units_module( + imperial DEPENDENCIES mp-units::si mp-units::international HEADERS include/mp_units/systems/imperial/imperial.h +) diff --git a/src/systems/imperial/include/units/systems/imperial/imperial.h b/src/systems/imperial/include/mp_units/systems/imperial/imperial.h similarity index 96% rename from src/systems/imperial/include/units/systems/imperial/imperial.h rename to src/systems/imperial/include/mp_units/systems/imperial/imperial.h index 9c1c41cc..20c0e3c9 100644 --- a/src/systems/imperial/include/units/systems/imperial/imperial.h +++ b/src/systems/imperial/include/mp_units/systems/imperial/imperial.h @@ -22,10 +22,10 @@ #pragma once -#include -#include +#include +#include -namespace units::imperial { +namespace mp_units::imperial { using namespace international; @@ -95,4 +95,4 @@ inline constexpr auto t = ton; } // namespace unit_symbols -} // namespace units::imperial +} // namespace mp_units::imperial diff --git a/src/systems/international/CMakeLists.txt b/src/systems/international/CMakeLists.txt index b4506398..1105a914 100644 --- a/src/systems/international/CMakeLists.txt +++ b/src/systems/international/CMakeLists.txt @@ -22,4 +22,4 @@ cmake_minimum_required(VERSION 3.19) -add_units_module(international DEPENDENCIES mp-units::si HEADERS include/units/systems/international/international.h) +add_units_module(international DEPENDENCIES mp-units::si HEADERS include/mp_units/systems/international/international.h) diff --git a/src/systems/international/include/units/systems/international/international.h b/src/systems/international/include/mp_units/systems/international/international.h similarity index 96% rename from src/systems/international/include/units/systems/international/international.h rename to src/systems/international/include/mp_units/systems/international/international.h index 4b61f77f..628849ec 100644 --- a/src/systems/international/include/units/systems/international/international.h +++ b/src/systems/international/include/mp_units/systems/international/international.h @@ -22,10 +22,10 @@ #pragma once -#include -#include +#include +#include -namespace units::international { +namespace mp_units::international { // clang-format off // mass @@ -97,4 +97,4 @@ inline constexpr auto hp = mechanical_horsepower; } // namespace unit_symbols -} // namespace units::international +} // namespace mp_units::international diff --git a/src/systems/isq/CMakeLists.txt b/src/systems/isq/CMakeLists.txt index 68be7f0c..33f51c2d 100644 --- a/src/systems/isq/CMakeLists.txt +++ b/src/systems/isq/CMakeLists.txt @@ -23,7 +23,9 @@ cmake_minimum_required(VERSION 3.19) add_units_module( - isq DEPENDENCIES mp-units::core - HEADERS include/units/systems/isq/base_quantities.h include/units/systems/isq/electromagnetism.h include/units/systems/isq/isq.h - include/units/systems/isq/mechanics.h include/units/systems/isq/space_and_time.h include/units/systems/isq/thermodynamics.h + isq + DEPENDENCIES mp-units::core + HEADERS include/mp_units/systems/isq/base_quantities.h include/mp_units/systems/isq/electromagnetism.h + include/mp_units/systems/isq/isq.h include/mp_units/systems/isq/mechanics.h + include/mp_units/systems/isq/space_and_time.h include/mp_units/systems/isq/thermodynamics.h ) diff --git a/src/systems/isq/include/units/systems/isq/base_quantities.h b/src/systems/isq/include/mp_units/systems/isq/base_quantities.h similarity index 93% rename from src/systems/isq/include/units/systems/isq/base_quantities.h rename to src/systems/isq/include/mp_units/systems/isq/base_quantities.h index fc256b84..7afacdce 100644 --- a/src/systems/isq/include/units/systems/isq/base_quantities.h +++ b/src/systems/isq/include/mp_units/systems/isq/base_quantities.h @@ -22,11 +22,11 @@ #pragma once -#include -#include -#include +#include +#include +#include -namespace units::isq { +namespace mp_units::isq { // clang-format off // dimensions of base quantities @@ -48,4 +48,4 @@ QUANTITY_SPEC(thermodynamic_temperature, dim_thermodynamic_temperature); QUANTITY_SPEC(amount_of_substance, dim_amount_of_substance); QUANTITY_SPEC(luminous_intensity, dim_luminous_intensity); -} // namespace units::isq +} // namespace mp_units::isq diff --git a/src/systems/isq/include/units/systems/isq/electromagnetism.h b/src/systems/isq/include/mp_units/systems/isq/electromagnetism.h similarity index 97% rename from src/systems/isq/include/units/systems/isq/electromagnetism.h rename to src/systems/isq/include/mp_units/systems/isq/electromagnetism.h index 67804907..88bdaac0 100644 --- a/src/systems/isq/include/units/systems/isq/electromagnetism.h +++ b/src/systems/isq/include/mp_units/systems/isq/electromagnetism.h @@ -22,12 +22,12 @@ #pragma once -#include -#include -#include -#include +#include +#include +#include +#include -namespace units::isq { +namespace mp_units::isq { QUANTITY_SPEC(electric_charge, electric_current* time); QUANTITY_SPEC(electric_charge_density, electric_charge / volume); @@ -135,4 +135,4 @@ QUANTITY_SPEC(reactive_power, complex_power); QUANTITY_SPEC(non_active_power, pow<1, 2>(pow<2>(apparent_power))); QUANTITY_SPEC(active_energy, instantaneous_power* time); -} // namespace units::isq +} // namespace mp_units::isq diff --git a/src/systems/isq/include/units/systems/isq/isq.h b/src/systems/isq/include/mp_units/systems/isq/isq.h similarity index 83% rename from src/systems/isq/include/units/systems/isq/isq.h rename to src/systems/isq/include/mp_units/systems/isq/isq.h index 5d824e51..7f3baef5 100644 --- a/src/systems/isq/include/units/systems/isq/isq.h +++ b/src/systems/isq/include/mp_units/systems/isq/isq.h @@ -23,9 +23,9 @@ #pragma once // IWYU pragma: begin_exports -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include // IWYU pragma: end_exports diff --git a/src/systems/isq/include/units/systems/isq/mechanics.h b/src/systems/isq/include/mp_units/systems/isq/mechanics.h similarity index 97% rename from src/systems/isq/include/units/systems/isq/mechanics.h rename to src/systems/isq/include/mp_units/systems/isq/mechanics.h index 1bb4e6d0..d8b14c4a 100644 --- a/src/systems/isq/include/units/systems/isq/mechanics.h +++ b/src/systems/isq/include/mp_units/systems/isq/mechanics.h @@ -22,11 +22,11 @@ #pragma once -#include -#include -#include +#include +#include +#include -namespace units::isq { +namespace mp_units::isq { QUANTITY_SPEC(mass_density, mass / volume); inline constexpr auto density = mass_density; @@ -106,4 +106,4 @@ QUANTITY_SPEC(mass_change_rate, mass / time); QUANTITY_SPEC(volume_flow_rate, velocity* area, quantity_character::scalar); QUANTITY_SPEC(action, mechanical_energy* time); -} // namespace units::isq +} // namespace mp_units::isq diff --git a/src/systems/isq/include/units/systems/isq/space_and_time.h b/src/systems/isq/include/mp_units/systems/isq/space_and_time.h similarity index 96% rename from src/systems/isq/include/units/systems/isq/space_and_time.h rename to src/systems/isq/include/mp_units/systems/isq/space_and_time.h index c6c99cfd..a84830ec 100644 --- a/src/systems/isq/include/units/systems/isq/space_and_time.h +++ b/src/systems/isq/include/mp_units/systems/isq/space_and_time.h @@ -22,10 +22,10 @@ #pragma once -#include -#include +#include +#include -namespace units::isq { +namespace mp_units::isq { QUANTITY_SPEC(width, length); inline constexpr auto breadth = width; @@ -82,4 +82,4 @@ QUANTITY_SPEC(phase_coefficient, phase_angle / path_length); QUANTITY_SPEC(propagation_coefficient, 1 / length); // γ = α + iβ where α denotes attenuation // and β the phase coefficient of a plane wave -} // namespace units::isq +} // namespace mp_units::isq diff --git a/src/systems/isq/include/units/systems/isq/thermodynamics.h b/src/systems/isq/include/mp_units/systems/isq/thermodynamics.h similarity index 96% rename from src/systems/isq/include/units/systems/isq/thermodynamics.h rename to src/systems/isq/include/mp_units/systems/isq/thermodynamics.h index ecf84851..c91f005b 100644 --- a/src/systems/isq/include/units/systems/isq/thermodynamics.h +++ b/src/systems/isq/include/mp_units/systems/isq/thermodynamics.h @@ -22,12 +22,12 @@ #pragma once -#include -#include -#include -#include +#include +#include +#include +#include -namespace units::isq { +namespace mp_units::isq { QUANTITY_SPEC(Celsius_temperature, thermodynamic_temperature); // TODO should we account for T0 here? QUANTITY_SPEC(linear_expansion_coefficient, 1 / length * (length / thermodynamic_temperature)); @@ -95,4 +95,4 @@ QUANTITY_SPEC(relative_mass_ratio_of_vapour, mass_ratio_of_water_vapour_to_dry_gas / mass_ratio_of_water_vapour_to_dry_gas); QUANTITY_SPEC(dew_point_temperature, thermodynamic_temperature); -} // namespace units::isq +} // namespace mp_units::isq diff --git a/src/systems/isq_angle/CMakeLists.txt b/src/systems/isq_angle/CMakeLists.txt index 8f4ae36e..13c0a57e 100644 --- a/src/systems/isq_angle/CMakeLists.txt +++ b/src/systems/isq_angle/CMakeLists.txt @@ -22,4 +22,6 @@ cmake_minimum_required(VERSION 3.19) -add_units_module(isq_angle DEPENDENCIES mp-units::angular mp-units::isq HEADERS include/units/systems/isq_angle/isq_angle.h) +add_units_module( + isq_angle DEPENDENCIES mp-units::angular mp-units::isq HEADERS include/mp_units/systems/isq_angle/isq_angle.h +) diff --git a/src/systems/isq_angle/include/units/systems/isq_angle/isq_angle.h b/src/systems/isq_angle/include/mp_units/systems/isq_angle/isq_angle.h similarity index 93% rename from src/systems/isq_angle/include/units/systems/isq_angle/isq_angle.h rename to src/systems/isq_angle/include/mp_units/systems/isq_angle/isq_angle.h index 14ce0392..8f87063c 100644 --- a/src/systems/isq_angle/include/units/systems/isq_angle/isq_angle.h +++ b/src/systems/isq_angle/include/mp_units/systems/isq_angle/isq_angle.h @@ -22,11 +22,11 @@ #pragma once -#include -#include -#include +#include +#include +#include -namespace units::isq_angle { +namespace mp_units::isq_angle { using namespace isq; @@ -55,4 +55,4 @@ QUANTITY_SPEC(loss_angle, angular_measure); // constants inline constexpr auto cotes_angle = cotes_angle_constant[angular::radian]; -} // namespace units::isq_angle +} // namespace mp_units::isq_angle diff --git a/src/systems/natural/CMakeLists.txt b/src/systems/natural/CMakeLists.txt index 884319cf..39fc5117 100644 --- a/src/systems/natural/CMakeLists.txt +++ b/src/systems/natural/CMakeLists.txt @@ -22,4 +22,4 @@ cmake_minimum_required(VERSION 3.19) -add_units_module(natural DEPENDENCIES mp-units::isq HEADERS include/units/systems/natural/natural.h) +add_units_module(natural DEPENDENCIES mp-units::isq HEADERS include/mp_units/systems/natural/natural.h) diff --git a/src/systems/natural/include/units/systems/natural/natural.h b/src/systems/natural/include/mp_units/systems/natural/natural.h similarity index 90% rename from src/systems/natural/include/units/systems/natural/natural.h rename to src/systems/natural/include/mp_units/systems/natural/natural.h index 205595f3..9e872c45 100644 --- a/src/systems/natural/include/units/systems/natural/natural.h +++ b/src/systems/natural/include/mp_units/systems/natural/natural.h @@ -22,13 +22,13 @@ #pragma once -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include -namespace units::natural { +namespace mp_units::natural { // clang-format off // units @@ -57,4 +57,4 @@ inline constexpr auto GeV2 = square; } // namespace unit_symbols -} // namespace units::natural +} // namespace mp_units::natural diff --git a/src/systems/si/CMakeLists.txt b/src/systems/si/CMakeLists.txt index 2e625e0d..2231ab6b 100644 --- a/src/systems/si/CMakeLists.txt +++ b/src/systems/si/CMakeLists.txt @@ -23,7 +23,9 @@ cmake_minimum_required(VERSION 3.19) add_units_module( - si DEPENDENCIES mp-units::isq - HEADERS include/units/systems/si/constants.h include/units/systems/si/prefixes.h include/units/systems/si/si.h - include/units/systems/si/unit_symbols.h include/units/systems/si/units.h + si + DEPENDENCIES mp-units::isq + HEADERS include/mp_units/systems/si/constants.h include/mp_units/systems/si/prefixes.h + include/mp_units/systems/si/si.h include/mp_units/systems/si/unit_symbols.h + include/mp_units/systems/si/units.h ) diff --git a/src/systems/si/include/units/systems/si/constants.h b/src/systems/si/include/mp_units/systems/si/constants.h similarity index 95% rename from src/systems/si/include/units/systems/si/constants.h rename to src/systems/si/include/mp_units/systems/si/constants.h index b10ea7f7..33e19df1 100644 --- a/src/systems/si/include/units/systems/si/constants.h +++ b/src/systems/si/include/mp_units/systems/si/constants.h @@ -22,11 +22,11 @@ #pragma once -#include -#include -#include +#include +#include +#include -namespace units::si { +namespace mp_units::si { namespace si2019 { @@ -69,4 +69,4 @@ inline constexpr struct magnetic_constant_unit : inline constexpr auto standard_gravity = isq::acceleration[standard_gravity_unit]; inline constexpr auto magnetic_constant = isq::magnetic_constant[magnetic_constant_unit]; -} // namespace units::si +} // namespace mp_units::si diff --git a/src/systems/si/include/units/systems/si/prefixes.h b/src/systems/si/include/mp_units/systems/si/prefixes.h similarity index 98% rename from src/systems/si/include/units/systems/si/prefixes.h rename to src/systems/si/include/mp_units/systems/si/prefixes.h index 1e536bbd..93891da2 100644 --- a/src/systems/si/include/units/systems/si/prefixes.h +++ b/src/systems/si/include/mp_units/systems/si/prefixes.h @@ -22,9 +22,9 @@ #pragma once -#include +#include -namespace units::si { +namespace mp_units::si { // clang-format off template struct yocto_ : prefixed_unit<"y", mag_power<10, -24>, U> {}; @@ -70,4 +70,4 @@ template inline constexpr zetta_ zetta; template inline constexpr yotta_ yotta; // clang-format on -} // namespace units::si +} // namespace mp_units::si diff --git a/src/systems/si/include/units/systems/si/si.h b/src/systems/si/include/mp_units/systems/si/si.h similarity index 87% rename from src/systems/si/include/units/systems/si/si.h rename to src/systems/si/include/mp_units/systems/si/si.h index 7a267475..7bce7abb 100644 --- a/src/systems/si/include/units/systems/si/si.h +++ b/src/systems/si/include/mp_units/systems/si/si.h @@ -22,7 +22,7 @@ #pragma once -#include -#include -#include -#include +#include +#include +#include +#include diff --git a/src/systems/si/include/units/systems/si/unit_symbols.h b/src/systems/si/include/mp_units/systems/si/unit_symbols.h similarity index 99% rename from src/systems/si/include/units/systems/si/unit_symbols.h rename to src/systems/si/include/mp_units/systems/si/unit_symbols.h index f8546abb..d84cb3a9 100644 --- a/src/systems/si/include/units/systems/si/unit_symbols.h +++ b/src/systems/si/include/mp_units/systems/si/unit_symbols.h @@ -22,10 +22,10 @@ #pragma once -#include -#include +#include +#include -namespace units::si::unit_symbols { +namespace mp_units::si::unit_symbols { inline constexpr auto ym = yocto; inline constexpr auto zm = zepto; @@ -645,4 +645,4 @@ inline constexpr auto m4 = pow<4>(metre); inline constexpr auto s2 = square; inline constexpr auto s3 = cubic; -} // namespace units::si::unit_symbols +} // namespace mp_units::si::unit_symbols diff --git a/src/systems/si/include/units/systems/si/units.h b/src/systems/si/include/mp_units/systems/si/units.h similarity index 96% rename from src/systems/si/include/units/systems/si/units.h rename to src/systems/si/include/mp_units/systems/si/units.h index b3542535..705c1e9d 100644 --- a/src/systems/si/include/units/systems/si/units.h +++ b/src/systems/si/include/mp_units/systems/si/units.h @@ -22,11 +22,11 @@ #pragma once -#include -#include -#include +#include +#include +#include -namespace units::si { +namespace mp_units::si { // clang-format off // base units @@ -89,9 +89,9 @@ inline constexpr struct electronvolt : named_unit<"eV", mag inline constexpr bool unit_can_be_prefixed = false; @@ -102,4 +102,4 @@ inline constexpr bool unit_can_be_prefixed = false; template<> inline constexpr bool unit_can_be_prefixed = false; -} // namespace units +} // namespace mp_units diff --git a/src/systems/typographic/CMakeLists.txt b/src/systems/typographic/CMakeLists.txt index 4de3b310..f6ae6acc 100644 --- a/src/systems/typographic/CMakeLists.txt +++ b/src/systems/typographic/CMakeLists.txt @@ -22,6 +22,4 @@ cmake_minimum_required(VERSION 3.19) -add_units_module( - typographic DEPENDENCIES mp-units::usc HEADERS include/units/systems/typographic/typographic.h -) +add_units_module(typographic DEPENDENCIES mp-units::usc HEADERS include/mp_units/systems/typographic/typographic.h) diff --git a/src/systems/typographic/include/units/systems/typographic/typographic.h b/src/systems/typographic/include/mp_units/systems/typographic/typographic.h similarity index 92% rename from src/systems/typographic/include/units/systems/typographic/typographic.h rename to src/systems/typographic/include/mp_units/systems/typographic/typographic.h index c5c6cf5b..38332354 100644 --- a/src/systems/typographic/include/units/systems/typographic/typographic.h +++ b/src/systems/typographic/include/mp_units/systems/typographic/typographic.h @@ -22,10 +22,10 @@ #pragma once -#include -#include +#include +#include -namespace units::typographic { +namespace mp_units::typographic { // clang-format off // https://en.wikipedia.org/wiki/Point_(typography) @@ -36,4 +36,4 @@ inline constexpr struct point_dtp : named_unit<"point(dtp)", mag * inline constexpr struct pica_dtp : named_unit<"pica(dtp)", mag<12> * point_dtp> {} pica_dtp; // clang-format on -} // namespace units::typographic +} // namespace mp_units::typographic diff --git a/src/systems/usc/CMakeLists.txt b/src/systems/usc/CMakeLists.txt index 9428fa16..8ede3f85 100644 --- a/src/systems/usc/CMakeLists.txt +++ b/src/systems/usc/CMakeLists.txt @@ -22,4 +22,4 @@ cmake_minimum_required(VERSION 3.19) -add_units_module(usc DEPENDENCIES mp-units::si mp-units::international HEADERS include/units/systems/usc/usc.h) +add_units_module(usc DEPENDENCIES mp-units::si mp-units::international HEADERS include/mp_units/systems/usc/usc.h) diff --git a/src/systems/usc/include/units/systems/usc/usc.h b/src/systems/usc/include/mp_units/systems/usc/usc.h similarity index 98% rename from src/systems/usc/include/units/systems/usc/usc.h rename to src/systems/usc/include/mp_units/systems/usc/usc.h index b3699d38..ec6a08d3 100644 --- a/src/systems/usc/include/units/systems/usc/usc.h +++ b/src/systems/usc/include/mp_units/systems/usc/usc.h @@ -22,10 +22,10 @@ #pragma once -#include -#include +#include +#include -namespace units::usc { +namespace mp_units::usc { using namespace international; @@ -160,4 +160,4 @@ inline constexpr auto deg_F = degree_Fahrenheit; } // namespace unit_symbols -} // namespace units::usc +} // namespace mp_units::usc diff --git a/src/utility/CMakeLists.txt b/src/utility/CMakeLists.txt index 61f52de3..fee9b799 100644 --- a/src/utility/CMakeLists.txt +++ b/src/utility/CMakeLists.txt @@ -24,5 +24,5 @@ cmake_minimum_required(VERSION 3.19) add_units_module( utility DEPENDENCIES mp-units::core mp-units::isq mp-units::si mp-units::angular - HEADERS include/units/chrono.h include/units/math.h include/units/random.h + HEADERS include/mp_units/chrono.h include/mp_units/math.h include/mp_units/random.h ) diff --git a/src/utility/include/units/chrono.h b/src/utility/include/mp_units/chrono.h similarity index 94% rename from src/utility/include/units/chrono.h rename to src/utility/include/mp_units/chrono.h index 7a09e956..25f621ea 100644 --- a/src/utility/include/units/chrono.h +++ b/src/utility/include/mp_units/chrono.h @@ -22,13 +22,13 @@ #pragma once -#include -#include -#include -#include +#include +#include +#include +#include #include -namespace units { +namespace mp_units { namespace detail { @@ -100,4 +100,4 @@ template QP> return ret_type(to_std_duration(qp.absolute())); } -} // namespace units +} // namespace mp_units diff --git a/src/utility/include/units/math.h b/src/utility/include/mp_units/math.h similarity index 96% rename from src/utility/include/units/math.h rename to src/utility/include/mp_units/math.h index b18114f0..8092d851 100644 --- a/src/utility/include/units/math.h +++ b/src/utility/include/mp_units/math.h @@ -22,12 +22,12 @@ #pragma once -#include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include +#include // IWYU pragma: begin_exports #include @@ -36,7 +36,7 @@ #include -namespace units { +namespace mp_units { /** * @brief Computes the value of a quantity raised to the `Num/Den` power @@ -157,7 +157,7 @@ template requires((!treat_as_floating_point) || requires { floor(q.number()); } || requires { std::floor(q.number()); }) && (To == R.unit || requires { - ::units::quantity_cast(q); + ::mp_units::quantity_cast(q); quantity{}, Rep>::one(); }) { @@ -194,7 +194,7 @@ template [[nodiscard]] constexpr quantity{}, Rep> ceil(const quantity& q) noexcept requires((!treat_as_floating_point) || requires { ceil(q.number()); } || requires { std::ceil(q.number()); }) && (To == R.unit || requires { - ::units::quantity_cast(q); + ::mp_units::quantity_cast(q); quantity{}, Rep>::one(); }) { @@ -234,7 +234,7 @@ template requires((!treat_as_floating_point) || requires { round(q.number()); } || requires { std::round(q.number()); }) && (To == R.unit || requires { - ::units::floor(q); + ::mp_units::floor(q); quantity{}, Rep>::one(); }) { @@ -246,7 +246,7 @@ template return quantity_cast(q); } } else { - const auto res_low = units::floor(q); + const auto res_low = mp_units::floor(q); const auto res_high = res_low + res_low.one(); const auto diff0 = q - res_low; const auto diff1 = res_high - q; @@ -414,4 +414,4 @@ template Q> } // namespace angular -} // namespace units +} // namespace mp_units diff --git a/src/utility/include/units/random.h b/src/utility/include/mp_units/random.h similarity index 99% rename from src/utility/include/units/random.h rename to src/utility/include/mp_units/random.h index 1a995fe5..2972f139 100644 --- a/src/utility/include/units/random.h +++ b/src/utility/include/mp_units/random.h @@ -22,11 +22,11 @@ #pragma once -#include +#include #include #include -namespace units { +namespace mp_units { namespace detail { template @@ -553,4 +553,4 @@ public: Q max() const { return Q(base::max()); } }; -} // namespace units +} // namespace mp_units diff --git a/test/unit_test/runtime/almost_equals.h b/test/unit_test/runtime/almost_equals.h index af0469ab..8d5ccc33 100644 --- a/test/unit_test/runtime/almost_equals.h +++ b/test/unit_test/runtime/almost_equals.h @@ -21,10 +21,10 @@ // SOFTWARE. #include -#include -#include +#include +#include -namespace units { +namespace mp_units { template struct AlmostEqualsMatcher : Catch::Matchers::MatcherGenericBase { @@ -54,4 +54,4 @@ AlmostEqualsMatcher AlmostEquals(const T& target) return {target}; } -} // namespace units +} // namespace mp_units diff --git a/test/unit_test/runtime/distribution_test.cpp b/test/unit_test/runtime/distribution_test.cpp index 412ce861..f4ffadcf 100644 --- a/test/unit_test/runtime/distribution_test.cpp +++ b/test/unit_test/runtime/distribution_test.cpp @@ -21,18 +21,18 @@ // SOFTWARE. #include -#include -#include -#include -#include +#include +#include +#include +#include #include #include #include #include -using namespace units; -using namespace units::si::unit_symbols; +using namespace mp_units; +using namespace mp_units::si::unit_symbols; TEST_CASE("uniform_int_distribution") { @@ -41,7 +41,7 @@ TEST_CASE("uniform_int_distribution") SECTION("default") { - auto dist = units::uniform_int_distribution(); + auto dist = mp_units::uniform_int_distribution(); CHECK(dist.a() == q::zero()); CHECK(dist.b() == q::max()); @@ -53,7 +53,7 @@ TEST_CASE("uniform_int_distribution") constexpr rep b = 5; auto stl_dist = std::uniform_int_distribution(a, b); - auto units_dist = units::uniform_int_distribution(q(a), q(b)); + auto units_dist = mp_units::uniform_int_distribution(q(a), q(b)); CHECK(units_dist.a() == q(stl_dist.a())); CHECK(units_dist.b() == q(stl_dist.b())); @@ -69,7 +69,7 @@ TEST_CASE("uniform_real_distribution") SECTION("default") { - auto dist = units::uniform_real_distribution(); + auto dist = mp_units::uniform_real_distribution(); CHECK(dist.a() == q::zero()); CHECK(dist.b() == q::one()); @@ -81,7 +81,7 @@ TEST_CASE("uniform_real_distribution") constexpr rep b = 5.0; auto stl_dist = std::uniform_real_distribution(a, b); - auto units_dist = units::uniform_real_distribution(q(a), q(b)); + auto units_dist = mp_units::uniform_real_distribution(q(a), q(b)); CHECK(units_dist.a() == q(stl_dist.a())); CHECK(units_dist.b() == q(stl_dist.b())); @@ -97,7 +97,7 @@ TEST_CASE("binomial_distribution") SECTION("default") { - auto dist = units::binomial_distribution(); + auto dist = mp_units::binomial_distribution(); CHECK(dist.p() == 0.5); CHECK(dist.t() == q::one()); @@ -109,7 +109,7 @@ TEST_CASE("binomial_distribution") constexpr double p = 0.25; auto stl_dist = std::binomial_distribution(t, p); - auto units_dist = units::binomial_distribution(q(t), p); + auto units_dist = mp_units::binomial_distribution(q(t), p); CHECK(units_dist.p() == stl_dist.p()); CHECK(units_dist.t() == q(stl_dist.t())); @@ -125,7 +125,7 @@ TEST_CASE("negative_binomial_distribution") SECTION("default") { - auto dist = units::negative_binomial_distribution(); + auto dist = mp_units::negative_binomial_distribution(); CHECK(dist.p() == 0.5); CHECK(dist.k() == q::one()); @@ -137,7 +137,7 @@ TEST_CASE("negative_binomial_distribution") constexpr double p = 0.25; auto stl_dist = std::negative_binomial_distribution(k, p); - auto units_dist = units::negative_binomial_distribution(q(k), p); + auto units_dist = mp_units::negative_binomial_distribution(q(k), p); CHECK(units_dist.p() == stl_dist.p()); CHECK(units_dist.k() == q(stl_dist.k())); @@ -153,7 +153,7 @@ TEST_CASE("geometric_distribution") SECTION("default") { - auto dist = units::geometric_distribution(); + auto dist = mp_units::geometric_distribution(); CHECK(dist.p() == 0.5); } @@ -163,7 +163,7 @@ TEST_CASE("geometric_distribution") constexpr double p = 0.25; auto stl_dist = std::geometric_distribution(p); - auto units_dist = units::geometric_distribution(p); + auto units_dist = mp_units::geometric_distribution(p); CHECK(units_dist.p() == stl_dist.p()); CHECK(units_dist.min() == q(stl_dist.min())); @@ -178,7 +178,7 @@ TEST_CASE("poisson_distribution") SECTION("default") { - auto dist = units::poisson_distribution(); + auto dist = mp_units::poisson_distribution(); CHECK(dist.mean() == 1.0); } @@ -188,7 +188,7 @@ TEST_CASE("poisson_distribution") constexpr double mean = 5.0; auto stl_dist = std::poisson_distribution(mean); - auto units_dist = units::poisson_distribution(mean); + auto units_dist = mp_units::poisson_distribution(mean); CHECK(units_dist.mean() == stl_dist.mean()); CHECK(units_dist.min() == q(stl_dist.min())); @@ -203,7 +203,7 @@ TEST_CASE("exponential_distribution") SECTION("default") { - auto dist = units::exponential_distribution(); + auto dist = mp_units::exponential_distribution(); CHECK(dist.lambda() == 1.0); } @@ -213,7 +213,7 @@ TEST_CASE("exponential_distribution") constexpr double lambda = 2.0; auto stl_dist = std::exponential_distribution(lambda); - auto units_dist = units::exponential_distribution(lambda); + auto units_dist = mp_units::exponential_distribution(lambda); CHECK(units_dist.lambda() == stl_dist.lambda()); CHECK(units_dist.min() == q(stl_dist.min())); @@ -228,7 +228,7 @@ TEST_CASE("gamma_distribution") SECTION("default") { - auto dist = units::gamma_distribution(); + auto dist = mp_units::gamma_distribution(); CHECK(dist.alpha() == 1.0); CHECK(dist.beta() == 1.0); @@ -240,7 +240,7 @@ TEST_CASE("gamma_distribution") constexpr double beta = 2.0; auto stl_dist = std::gamma_distribution(alpha, beta); - auto units_dist = units::gamma_distribution(alpha, beta); + auto units_dist = mp_units::gamma_distribution(alpha, beta); CHECK(units_dist.alpha() == stl_dist.alpha()); CHECK(units_dist.beta() == stl_dist.beta()); @@ -256,7 +256,7 @@ TEST_CASE("weibull_distribution") SECTION("default") { - auto dist = units::weibull_distribution(); + auto dist = mp_units::weibull_distribution(); CHECK(dist.a() == 1.0); CHECK(dist.b() == 1.0); @@ -268,7 +268,7 @@ TEST_CASE("weibull_distribution") constexpr rep b = 2.0; auto stl_dist = std::weibull_distribution(a, b); - auto units_dist = units::weibull_distribution(a, b); + auto units_dist = mp_units::weibull_distribution(a, b); CHECK(units_dist.a() == stl_dist.a()); CHECK(units_dist.b() == stl_dist.b()); @@ -284,7 +284,7 @@ TEST_CASE("extreme_value_distribution") SECTION("default") { - auto dist = units::extreme_value_distribution(); + auto dist = mp_units::extreme_value_distribution(); CHECK(dist.a() == q::zero()); CHECK(dist.b() == 1.0); @@ -296,7 +296,7 @@ TEST_CASE("extreme_value_distribution") constexpr rep b = 2.0; auto stl_dist = std::extreme_value_distribution(a, b); - auto units_dist = units::extreme_value_distribution(q(a), b); + auto units_dist = mp_units::extreme_value_distribution(q(a), b); CHECK(units_dist.a() == q(stl_dist.a())); CHECK(units_dist.b() == stl_dist.b()); @@ -312,7 +312,7 @@ TEST_CASE("normal_distribution") SECTION("default") { - auto dist = units::normal_distribution(); + auto dist = mp_units::normal_distribution(); CHECK(dist.mean() == q::zero()); CHECK(dist.stddev() == q::one()); @@ -324,7 +324,7 @@ TEST_CASE("normal_distribution") constexpr rep stddev = 2.0; auto stl_dist = std::normal_distribution(mean, stddev); - auto units_dist = units::normal_distribution(q(mean), q(stddev)); + auto units_dist = mp_units::normal_distribution(q(mean), q(stddev)); CHECK(units_dist.mean() == q(stl_dist.mean())); CHECK(units_dist.stddev() == q(stl_dist.stddev())); @@ -340,7 +340,7 @@ TEST_CASE("lognormal_distribution") SECTION("default") { - auto dist = units::lognormal_distribution(); + auto dist = mp_units::lognormal_distribution(); CHECK(dist.m() == q::zero()); CHECK(dist.s() == q::one()); @@ -352,7 +352,7 @@ TEST_CASE("lognormal_distribution") constexpr rep s = 2.0; auto stl_dist = std::lognormal_distribution(m, s); - auto units_dist = units::lognormal_distribution(q(m), q(s)); + auto units_dist = mp_units::lognormal_distribution(q(m), q(s)); CHECK(units_dist.m() == q(stl_dist.m())); CHECK(units_dist.s() == q(stl_dist.s())); @@ -368,7 +368,7 @@ TEST_CASE("chi_squared_distribution") SECTION("default") { - auto dist = units::chi_squared_distribution(); + auto dist = mp_units::chi_squared_distribution(); CHECK(dist.n() == 1.0); } @@ -378,7 +378,7 @@ TEST_CASE("chi_squared_distribution") constexpr rep n = 5.0; auto stl_dist = std::chi_squared_distribution(n); - auto units_dist = units::chi_squared_distribution(n); + auto units_dist = mp_units::chi_squared_distribution(n); CHECK(units_dist.n() == stl_dist.n()); CHECK(units_dist.min() == q(stl_dist.min())); @@ -393,7 +393,7 @@ TEST_CASE("cauchy_distribution") SECTION("default") { - auto dist = units::cauchy_distribution(); + auto dist = mp_units::cauchy_distribution(); CHECK(dist.a() == q::zero()); CHECK(dist.b() == q::one()); @@ -405,7 +405,7 @@ TEST_CASE("cauchy_distribution") constexpr rep b = 2.0; auto stl_dist = std::cauchy_distribution(a, b); - auto units_dist = units::cauchy_distribution(q(a), q(b)); + auto units_dist = mp_units::cauchy_distribution(q(a), q(b)); CHECK(units_dist.a() == q(stl_dist.a())); CHECK(units_dist.b() == q(stl_dist.b())); @@ -421,7 +421,7 @@ TEST_CASE("fisher_f_distribution") SECTION("default") { - auto dist = units::fisher_f_distribution(); + auto dist = mp_units::fisher_f_distribution(); CHECK(dist.m() == 1.0); CHECK(dist.n() == 1.0); @@ -433,7 +433,7 @@ TEST_CASE("fisher_f_distribution") constexpr rep n = 2.0; auto stl_dist = std::fisher_f_distribution(m, n); - auto units_dist = units::fisher_f_distribution(m, n); + auto units_dist = mp_units::fisher_f_distribution(m, n); CHECK(units_dist.m() == stl_dist.m()); CHECK(units_dist.n() == stl_dist.n()); @@ -449,7 +449,7 @@ TEST_CASE("student_t_distribution") SECTION("default") { - auto dist = units::student_t_distribution(); + auto dist = mp_units::student_t_distribution(); CHECK(dist.n() == 1.0); } @@ -459,7 +459,7 @@ TEST_CASE("student_t_distribution") constexpr rep n = 2.0; auto stl_dist = std::student_t_distribution(n); - auto units_dist = units::student_t_distribution(n); + auto units_dist = mp_units::student_t_distribution(n); CHECK(units_dist.n() == stl_dist.n()); CHECK(units_dist.min() == q(stl_dist.min())); @@ -475,7 +475,7 @@ TEST_CASE("discrete_distribution") SECTION("default") { auto stl_dist = std::discrete_distribution(); - auto units_dist = units::discrete_distribution(); + auto units_dist = mp_units::discrete_distribution(); CHECK(units_dist.min() == q(stl_dist.min())); CHECK(units_dist.max() == q(stl_dist.max())); @@ -487,7 +487,7 @@ TEST_CASE("discrete_distribution") constexpr std::array weights = {1.0, 2.0, 3.0}; auto stl_dist = std::discrete_distribution(weights.cbegin(), weights.cend()); - auto units_dist = units::discrete_distribution(weights.cbegin(), weights.cend()); + auto units_dist = mp_units::discrete_distribution(weights.cbegin(), weights.cend()); CHECK(units_dist.probabilities() == stl_dist.probabilities()); } @@ -497,7 +497,7 @@ TEST_CASE("discrete_distribution") std::initializer_list weights = {1.0, 2.0, 3.0}; auto stl_dist = std::discrete_distribution(weights); - auto units_dist = units::discrete_distribution(weights); + auto units_dist = mp_units::discrete_distribution(weights); CHECK(units_dist.probabilities() == stl_dist.probabilities()); } @@ -508,7 +508,7 @@ TEST_CASE("discrete_distribution") constexpr double xmin = 1, xmax = 3; auto stl_dist = std::discrete_distribution(count, xmin, xmax, [](double val) { return val; }); - auto units_dist = units::discrete_distribution(count, xmin, xmax, [](double val) { return val; }); + auto units_dist = mp_units::discrete_distribution(count, xmin, xmax, [](double val) { return val; }); CHECK(units_dist.probabilities() == stl_dist.probabilities()); } @@ -526,7 +526,7 @@ TEST_CASE("piecewise_constant_distribution") SECTION("default") { auto stl_dist = std::piecewise_constant_distribution(); - auto units_dist = units::piecewise_constant_distribution(); + auto units_dist = mp_units::piecewise_constant_distribution(); CHECK(units_dist.min() == q(stl_dist.min())); CHECK(units_dist.max() == q(stl_dist.max())); @@ -546,7 +546,7 @@ TEST_CASE("piecewise_constant_distribution") auto stl_dist = std::piecewise_constant_distribution(intervals_rep.cbegin(), intervals_rep.cend(), weights.cbegin()); auto units_dist = - units::piecewise_constant_distribution(intervals_qty.cbegin(), intervals_qty.cend(), weights.cbegin()); + mp_units::piecewise_constant_distribution(intervals_qty.cbegin(), intervals_qty.cend(), weights.cbegin()); CHECK(stl_dist.intervals() == intervals_rep_vec); CHECK(units_dist.intervals() == intervals_qty_vec); @@ -560,7 +560,7 @@ TEST_CASE("piecewise_constant_distribution") 3.0 * isq::length[si::metre]}; auto stl_dist = std::piecewise_constant_distribution(intervals_rep, [](rep val) { return val; }); - auto units_dist = units::piecewise_constant_distribution(intervals_qty, [](q qty) { return qty.number(); }); + auto units_dist = mp_units::piecewise_constant_distribution(intervals_qty, [](q qty) { return qty.number(); }); CHECK(units_dist.intervals() == intervals_qty_vec); CHECK(units_dist.densities() == stl_dist.densities()); @@ -574,7 +574,7 @@ TEST_CASE("piecewise_constant_distribution") auto stl_dist = std::piecewise_constant_distribution(nw, xmin_rep, xmax_rep, [](rep val) { return val; }); auto units_dist = - units::piecewise_constant_distribution(nw, xmin_qty, xmax_qty, [](q qty) { return qty.number(); }); + mp_units::piecewise_constant_distribution(nw, xmin_qty, xmax_qty, [](q qty) { return qty.number(); }); CHECK(units_dist.intervals() == intervals_qty_vec); CHECK(units_dist.densities() == stl_dist.densities()); @@ -593,7 +593,7 @@ TEST_CASE("piecewise_linear_distribution") SECTION("default") { auto stl_dist = std::piecewise_linear_distribution(); - auto units_dist = units::piecewise_linear_distribution(); + auto units_dist = mp_units::piecewise_linear_distribution(); CHECK(units_dist.min() == q(stl_dist.min())); CHECK(units_dist.max() == q(stl_dist.max())); @@ -613,7 +613,7 @@ TEST_CASE("piecewise_linear_distribution") auto stl_dist = std::piecewise_linear_distribution(intervals_rep.cbegin(), intervals_rep.cend(), weights.cbegin()); auto units_dist = - units::piecewise_linear_distribution(intervals_qty.cbegin(), intervals_qty.cend(), weights.cbegin()); + mp_units::piecewise_linear_distribution(intervals_qty.cbegin(), intervals_qty.cend(), weights.cbegin()); CHECK(stl_dist.intervals() == intervals_rep_vec); CHECK(units_dist.intervals() == intervals_qty_vec); @@ -627,7 +627,7 @@ TEST_CASE("piecewise_linear_distribution") 3.0 * isq::length[si::metre]}; auto stl_dist = std::piecewise_linear_distribution(intervals_rep, [](rep val) { return val; }); - auto units_dist = units::piecewise_linear_distribution(intervals_qty, [](q qty) { return qty.number(); }); + auto units_dist = mp_units::piecewise_linear_distribution(intervals_qty, [](q qty) { return qty.number(); }); CHECK(units_dist.intervals() == intervals_qty_vec); CHECK(units_dist.densities() == stl_dist.densities()); @@ -641,7 +641,7 @@ TEST_CASE("piecewise_linear_distribution") auto stl_dist = std::piecewise_linear_distribution(nw, xmin_rep, xmax_rep, [](rep val) { return val; }); auto units_dist = - units::piecewise_linear_distribution(nw, xmin_qty, xmax_qty, [](q qty) { return qty.number(); }); + mp_units::piecewise_linear_distribution(nw, xmin_qty, xmax_qty, [](q qty) { return qty.number(); }); CHECK(units_dist.intervals() == intervals_qty_vec); CHECK(units_dist.densities() == stl_dist.densities()); diff --git a/test/unit_test/runtime/fmt_test.cpp b/test/unit_test/runtime/fmt_test.cpp index 682a0a84..805ae5ee 100644 --- a/test/unit_test/runtime/fmt_test.cpp +++ b/test/unit_test/runtime/fmt_test.cpp @@ -22,23 +22,23 @@ #include #include -#include -#include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include +#include +#include #include #include #include template - requires units::is_scalar -inline constexpr bool units::is_vector = true; + requires mp_units::is_scalar +inline constexpr bool mp_units::is_vector = true; -using namespace units; -using namespace units::si::unit_symbols; +using namespace mp_units; +using namespace mp_units::si::unit_symbols; TEST_CASE("operator<< on a quantity", "[text][ostream][fmt]") { diff --git a/test/unit_test/runtime/math_test.cpp b/test/unit_test/runtime/math_test.cpp index f1420cb1..36ea6e83 100644 --- a/test/unit_test/runtime/math_test.cpp +++ b/test/unit_test/runtime/math_test.cpp @@ -22,16 +22,16 @@ #include "almost_equals.h" #include -#include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include +#include #include -using namespace units; -using namespace units::si::unit_symbols; +using namespace mp_units; +using namespace mp_units::si::unit_symbols; // classical @@ -361,9 +361,9 @@ TEST_CASE("ISQ inverse trigonometric functions", "[inv trig][isq]") TEST_CASE("Angle trigonometric functions", "[trig][angle]") { - using namespace units::angular; - using namespace units::angular::unit_symbols; - using units::angular::unit_symbols::deg; + using namespace mp_units::angular; + using namespace mp_units::angular::unit_symbols; + using mp_units::angular::unit_symbols::deg; SECTION("sin") { @@ -407,9 +407,9 @@ TEST_CASE("Angle trigonometric functions", "[trig][angle]") TEST_CASE("Angle inverse trigonometric functions", "[inv trig][angle]") { - using namespace units::angular; - using namespace units::angular::unit_symbols; - using units::angular::unit_symbols::deg; + using namespace mp_units::angular; + using namespace mp_units::angular::unit_symbols; + using mp_units::angular::unit_symbols::deg; SECTION("asin") { diff --git a/test/unit_test/static/angle_test.cpp b/test/unit_test/static/angle_test.cpp index d9ca9fd2..726ab2d4 100644 --- a/test/unit_test/static/angle_test.cpp +++ b/test/unit_test/static/angle_test.cpp @@ -20,16 +20,16 @@ // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE // SOFTWARE. -#include -#include +#include +#include #include namespace { // plane angle -using namespace units::references; -using namespace units::literals; +using namespace mp_units::references; +using namespace mp_units::literals; static_assert(360 * deg == 1 * rev); static_assert(400 * grad == 1 * rev); @@ -39,10 +39,10 @@ static_assert(360_q_deg == 1_q_rev); static_assert(400_q_grad == 1_q_rev); static_assert(std::numbers::pi * quantity_cast(2._q_rad) == quantity_cast(1._q_rev)); -static_assert(units::aliases::deg<>(360.) == units::aliases::rev<>(1.)); -static_assert(units::aliases::deg(360) == units::aliases::rev(1)); -static_assert(units::aliases::grad(400) == units::aliases::rev(1)); -static_assert(std::numbers::pi * units::aliases::rad<>(2.) == units::aliases::rev<>(1.)); +static_assert(mp_units::aliases::deg<>(360.) == mp_units::aliases::rev<>(1.)); +static_assert(mp_units::aliases::deg(360) == mp_units::aliases::rev(1)); +static_assert(mp_units::aliases::grad(400) == mp_units::aliases::rev(1)); +static_assert(std::numbers::pi * mp_units::aliases::rad<>(2.) == mp_units::aliases::rev<>(1.)); // solid angle diff --git a/test/unit_test/static/cgs_test.cpp b/test/unit_test/static/cgs_test.cpp index 4a0dc7bb..a8e7f330 100644 --- a/test/unit_test/static/cgs_test.cpp +++ b/test/unit_test/static/cgs_test.cpp @@ -20,15 +20,15 @@ // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE // SOFTWARE. -#include -#include -#include -#include +#include +#include +#include +#include namespace { -using namespace units; -using namespace units::isq::si::cgs; +using namespace mp_units; +using namespace mp_units::isq::si::cgs; /* ************** BASE DIMENSIONS **************** */ diff --git a/test/unit_test/static/dimension_test.cpp b/test/unit_test/static/dimension_test.cpp index 543dc6b5..d1a22b79 100644 --- a/test/unit_test/static/dimension_test.cpp +++ b/test/unit_test/static/dimension_test.cpp @@ -21,14 +21,14 @@ // SOFTWARE. #include "test_tools.h" -#include -#include -#include -#include +#include +#include +#include +#include namespace { -using namespace units; +using namespace mp_units; using dimension_one_ = struct dimension_one; @@ -79,13 +79,13 @@ static_assert(is_of_type>>); static_assert(is_of_type>); -static_assert(is_of_type>>); +static_assert(is_of_type>>); -static_assert(is_of_type, time_>>); -static_assert(is_of_type, time_>>); +static_assert(is_of_type, time_>>); +static_assert(is_of_type, time_>>); -static_assert(is_of_type, time_>>); -static_assert(is_of_type, time_>>); +static_assert(is_of_type, time_>>); +static_assert(is_of_type, time_>>); static_assert(is_of_type<1 / time * length, derived_dimension>>); static_assert(is_of_type<1 / time * time, dimension_one_>); @@ -94,32 +94,33 @@ static_assert(is_of_type