From eeee5a2a3675f7bde64f19d1abab887b0ff928e5 Mon Sep 17 00:00:00 2001 From: Roland Conybeare Date: Mon, 29 Apr 2024 23:33:17 -0500 Subject: [PATCH] xo-unit: builds + runs on darwin --- docs/CMakeLists.txt | 2 +- include/xo/unit/quantity2.hpp | 27 +++++++++++++++++++++++---- utest/scaled_unit.test.cpp | 12 ++++++------ 3 files changed, 30 insertions(+), 11 deletions(-) diff --git a/docs/CMakeLists.txt b/docs/CMakeLists.txt index 403cc2af..43df570c 100644 --- a/docs/CMakeLists.txt +++ b/docs/CMakeLists.txt @@ -7,4 +7,4 @@ xo_docdir_sphinx_config( quantity-reference.rst quantity-class.rst quantity-factoryfunctions.rst quantity-unitvars.rst unit-reference.rst unit-concept.rst unit-quantities.rst ) -xo_utest_coverage_config2() +#xo_utest_coverage_config2() diff --git a/include/xo/unit/quantity2.hpp b/include/xo/unit/quantity2.hpp index efd2b75f..8da5a914 100644 --- a/include/xo/unit/quantity2.hpp +++ b/include/xo/unit/quantity2.hpp @@ -1,4 +1,4 @@ -/** @file quantity2.hpp +/** @file quantity.hpp * * Author: Roland Conybeare **/ @@ -14,15 +14,34 @@ namespace xo { * * Constexpr implementation, can compute units at compile time **/ - template - class quantity2 { + template NaturalUnit> + class quantity { public: using repr_type = Repr; + using unit_type = natural_unit; + + public: + constexpr quantity(Repr scale) + : scale_{scale} {} + + constexpr const repr_type & scale() const { return scale_; } + constexpr unit_type unit() const { return NaturalUnit; } + + constexpr bool is_dimensionless() const { return s_unit.is_dimensionless(); } + + constexpr quantity unit_qty() { return quantity(1); } private: + /** @brief unit (established at compile time) for this quantity **/ + static NaturalUnit s_unit = NaturalUnit; + + /** @brief quantity represents this multiple of unit amount **/ + Repr scale_ = Repr(); }; } /*namespace qty*/ } /*namespace xo*/ -/** end quantity2.hpp **/ +/** end quantity.hpp **/ diff --git a/utest/scaled_unit.test.cpp b/utest/scaled_unit.test.cpp index d9b1d3d6..74c29918 100644 --- a/utest/scaled_unit.test.cpp +++ b/utest/scaled_unit.test.cpp @@ -20,14 +20,14 @@ namespace xo { constexpr su64_type su_reciprocal = su.reciprocal(); TEST_CASE("scaled_unit", "[scaled_unit]") { - static_assert(su_reciprocal.natural_unit_ == nu::gram.reciprocal()); - REQUIRE(su_reciprocal.natural_unit_ == nu::gram.reciprocal()); + static_assert(su_reciprocal.natural_unit_ == nu::gram.reciprocal()); + REQUIRE(su_reciprocal.natural_unit_ == nu::gram.reciprocal()); - static_assert(su_reciprocal.outer_scale_factor_ == 1); - REQUIRE(su_reciprocal.outer_scale_factor_ == 1); + static_assert(su_reciprocal.outer_scale_factor_ == 1); + REQUIRE(su_reciprocal.outer_scale_factor_ == 1); - static_assert(su_reciprocal.outer_scale_sq_ == 1.0); - REQUIRE(su_reciprocal.outer_scale_sq_ == 1.0); + static_assert(su_reciprocal.outer_scale_sq_ == 1.0); + REQUIRE(su_reciprocal.outer_scale_sq_ == 1.0); } /*TEST_CASE(scaled_unit)*/ TEST_CASE("su_product", "[scaled_unit]") {