From 19ef51cfe2688c713f794849243eaf8f0b7cfcf1 Mon Sep 17 00:00:00 2001 From: Roland Conybeare Date: Wed, 1 May 2024 08:43:04 -0500 Subject: [PATCH] xo-pyunit: + mass units + unambiguous unit printing --- src/pyunit/pyunit.cpp | 26 ++++++++++++++++++-------- 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/src/pyunit/pyunit.cpp b/src/pyunit/pyunit.cpp index d32813df..08486e77 100644 --- a/src/pyunit/pyunit.cpp +++ b/src/pyunit/pyunit.cpp @@ -24,26 +24,36 @@ namespace xo { .def("__repr__", [](Unit & x) { - /* e.g. "1g" for xo::qty::nu::gram */ - return tostr(1, x.abbrev()); + /* e.g. "" for xo::qty::nu::gram */ + return tostr(""); }) ; py::module unit = m.def_submodule("unit"); + unit.attr("picogram") = &xo::qty::nu::picogram; + unit.attr("nanoogram") = &xo::qty::nu::nanogram; unit.attr("microgram") = &xo::qty::nu::microgram; unit.attr("milligram") = &xo::qty::nu::milligram; - unit.attr("gram") = &xo::qty::nu::gram; - unit.attr("kilogram") = &xo::qty::nu::kilogram; - unit.attr("tonne") = &xo::qty::nu::tonne; + unit.attr("gram") = &xo::qty::nu::gram; + unit.attr("kilogram") = &xo::qty::nu::kilogram; + unit.attr("tonne") = &xo::qty::nu::tonne; + unit.attr("kilotonne") = &xo::qty::nu::kilotonne; + + unit.attr("meter") = &xo::qty::nu::meter; py::module qty = m.def_submodule("qty"); + qty.def("picograms", [](double x) { return XoQuantity(x, nu::picogram); }); + qty.def("nanograms", [](double x) { return XoQuantity(x, nu::nanogram); }); qty.def("micrograms", [](double x) { return XoQuantity(x, nu::microgram); }); qty.def("milligrams", [](double x) { return XoQuantity(x, nu::milligram); }); - qty.def("grams", [](double x) { return XoQuantity(x, nu::gram); }); - qty.def("kilograms", [](double x) { return XoQuantity(x, nu::kilogram); }); - qty.def("tonnes", [](double x) { return XoQuantity(x, nu::tonne); }); + qty.def("grams", [](double x) { return XoQuantity(x, nu::gram); }); + qty.def("kilograms", [](double x) { return XoQuantity(x, nu::kilogram); }); + qty.def("tonnes", [](double x) { return XoQuantity(x, nu::tonne); }); + qty.def("kilotonnes", [](double x) { return XoQuantity(x, nu::kilotonne); }); + + qty.def("meters", [](double x) { return XoQuantity(x, nu::meter); }); py::class_(m, "Quantity") .def(py::init(),