From f4d00d9e17bfdca1c22b8537407b0cf5d107922a Mon Sep 17 00:00:00 2001 From: Roland Conybeare Date: Mon, 16 Mar 2026 20:18:52 -0500 Subject: [PATCH] xo-interpreter2: streamline pm setup --- src/numeric/SetupNumeric.cpp | 87 +++++++++++++++++------------------- 1 file changed, 40 insertions(+), 47 deletions(-) diff --git a/src/numeric/SetupNumeric.cpp b/src/numeric/SetupNumeric.cpp index c5920505..75a1f1de 100644 --- a/src/numeric/SetupNumeric.cpp +++ b/src/numeric/SetupNumeric.cpp @@ -91,22 +91,6 @@ namespace xo { return true; } - namespace { - bool install_aux(InstallSink sink, - DPrimitive_gco_2_gco_gco * pm, - InstallFlags flags) - { - if (flags != InstallFlags::f_none) { - return sink(pm->name(), - pm->fn_td(), - obj(pm), - flags); - } else { - return true; - } - } - } - bool SetupNumeric::register_primitives(obj rcx, InstallSink sink, @@ -119,37 +103,46 @@ namespace xo { bool ok = true; - ok = ok & install_aux(sink, - NumericPrimitives::make_multiply_pm(mm, stbl), - flags & InstallFlags::f_essential); - ok = ok & install_aux(sink, - NumericPrimitives::make_divide_pm(mm, stbl), - flags & InstallFlags::f_essential); - ok = ok & install_aux(sink, - NumericPrimitives::make_add_pm(mm, stbl), - flags & InstallFlags::f_essential); - ok = ok & install_aux(sink, - NumericPrimitives::make_subtract_pm(mm, stbl), - flags & InstallFlags::f_essential); - - ok = ok & install_aux(sink, - NumericPrimitives::make_cmpeq_pm(mm, stbl), - flags & InstallFlags::f_essential); - ok = ok & install_aux(sink, - NumericPrimitives::make_cmpne_pm(mm, stbl), - flags & InstallFlags::f_essential); - ok = ok & install_aux(sink, - NumericPrimitives::make_cmplt_pm(mm, stbl), - flags & InstallFlags::f_essential); - ok = ok & install_aux(sink, - NumericPrimitives::make_cmple_pm(mm, stbl), - flags & InstallFlags::f_essential); - ok = ok & install_aux(sink, - NumericPrimitives::make_cmpgt_pm(mm, stbl), - flags & InstallFlags::f_essential); - ok = ok & install_aux(sink, - NumericPrimitives::make_cmpge_pm(mm, stbl), - flags & InstallFlags::f_essential); + ok = ok & (PrimitiveRegistry::install_aux + (sink, + NumericPrimitives::make_multiply_pm(mm, stbl), + flags & InstallFlags::f_essential)); + ok = ok & (PrimitiveRegistry::install_aux + (sink, + NumericPrimitives::make_divide_pm(mm, stbl), + flags & InstallFlags::f_essential)); + ok = ok & (PrimitiveRegistry::install_aux + (sink, + NumericPrimitives::make_add_pm(mm, stbl), + flags & InstallFlags::f_essential)); + ok = ok & (PrimitiveRegistry::install_aux + (sink, + NumericPrimitives::make_subtract_pm(mm, stbl), + flags & InstallFlags::f_essential)); + ok = ok & (PrimitiveRegistry::install_aux + (sink, + NumericPrimitives::make_cmpeq_pm(mm, stbl), + flags & InstallFlags::f_essential)); + ok = ok & (PrimitiveRegistry::install_aux + (sink, + NumericPrimitives::make_cmpne_pm(mm, stbl), + flags & InstallFlags::f_essential)); + ok = ok & (PrimitiveRegistry::install_aux + (sink, + NumericPrimitives::make_cmplt_pm(mm, stbl), + flags & InstallFlags::f_essential)); + ok = ok & (PrimitiveRegistry::install_aux + (sink, + NumericPrimitives::make_cmple_pm(mm, stbl), + flags & InstallFlags::f_essential)); + ok = ok & (PrimitiveRegistry::install_aux + (sink, + NumericPrimitives::make_cmpgt_pm(mm, stbl), + flags & InstallFlags::f_essential)); + ok = ok & (PrimitiveRegistry::install_aux + (sink, + NumericPrimitives::make_cmpge_pm(mm, stbl), + flags & InstallFlags::f_essential)); return ok; }