From ce32d59bc353ffcbce055d73d5d4f41b054a42ef Mon Sep 17 00:00:00 2001 From: Roland Conybeare Date: Fri, 9 Jan 2026 18:09:50 -0500 Subject: [PATCH] xo-object: streamline DFloat construction, like w/ DList/DInteger --- include/xo/object2/DFloat.hpp | 14 ++++++++++++-- src/object2/DFloat.cpp | 3 +-- utest/X1Collector.test.cpp | 3 +-- 3 files changed, 14 insertions(+), 6 deletions(-) diff --git a/include/xo/object2/DFloat.hpp b/include/xo/object2/DFloat.hpp index 3df8f74..0812a59 100644 --- a/include/xo/object2/DFloat.hpp +++ b/include/xo/object2/DFloat.hpp @@ -6,6 +6,7 @@ #pragma once #include +#include #include namespace xo { @@ -16,9 +17,12 @@ namespace xo { explicit DFloat(double x) : value_{x} {} + /** probably want default = ANumeric, once we introduce it **/ + template + static obj box(obj mm, double x); + /** allocate boxed value @p x using memory from @p mm **/ - static DFloat * make(obj mm, - double x); + static DFloat * _box(obj mm, double x); double value() const noexcept { return value_; } @@ -31,6 +35,12 @@ namespace xo { /** boxed floating-oint value **/ double value_; }; + + template + obj + DFloat::box(obj mm, double x) { + return obj(DFloat::_box(mm, x)); + } } /*nmaespace scm*/ } /*namespace xo*/ diff --git a/src/object2/DFloat.cpp b/src/object2/DFloat.cpp index a9f7150..52940ef 100644 --- a/src/object2/DFloat.cpp +++ b/src/object2/DFloat.cpp @@ -12,8 +12,7 @@ namespace xo { namespace scm { DFloat * - DFloat::make(obj mm, - double x) + DFloat::_box(obj mm, double x) { void * mem = mm.alloc(typeseq::id(), sizeof(DFloat)); diff --git a/utest/X1Collector.test.cpp b/utest/X1Collector.test.cpp index 9d4256a..cec744e 100644 --- a/utest/X1Collector.test.cpp +++ b/utest/X1Collector.test.cpp @@ -167,8 +167,7 @@ namespace ut { ok = c_o.is_type_installed(typeseq::id()); REQUIRE(ok); - DFloat * x0 = DFloat::make(gc_o, 3.1415927); - auto x0_o = with_facet::mkobj(x0); + auto x0_o = DFloat::box(gc_o, 3.1415927); c_o.add_gc_root(&x0_o); REQUIRE(to_0->allocated() == sizeof(AllocHeader) + sizeof(DFloat));