diff --git a/xo-interpreter2/src/interpreter2/SetupInterpreter2.cpp b/xo-interpreter2/src/interpreter2/SetupInterpreter2.cpp index 643ceab2..d6013741 100644 --- a/xo-interpreter2/src/interpreter2/SetupInterpreter2.cpp +++ b/xo-interpreter2/src/interpreter2/SetupInterpreter2.cpp @@ -34,71 +34,11 @@ namespace xo { using xo::xtag; namespace scm { - /** TODO: MOVE THESE install_aux() remplates SOMEWHERE COMMON **/ - - template - bool install_aux(InstallSink sink, - PrimitiveRepr * pm, - InstallFlags flags) - { - scope log(XO_DEBUG(true)); - - if ((flags & InstallFlags::f_generalpurpose) == InstallFlags::f_generalpurpose) { - log && log("create primitive", xtag("name", pm->name())); - - return sink(pm->name(), - pm->fn_td(), - obj(pm), - flags); - } else { - log && log("skip primitive", xtag("name", pm->name())); - - return true; - } - } - - template - bool install_aux(InstallSink sink, - obj mm, - std::string_view name, - typename Primitive::FunctionPtrType impl, - InstallFlags flags) - { - if (flags != InstallFlags::f_none) { - auto pm - = Primitive::_make(mm, name, impl); - - return install_aux(sink, pm, flags); - } else { - return true; - } - } - - bool - SetupInterpreter2::register_primitives(obj rcx, - InstallSink sink, - InstallFlags flags) - { - scope log(XO_DEBUG(true)); - - obj mm = rcx.allocator(); - StringTable * stbl = rcx.stringtable(); - - bool ok = true; - - ok = ok & install_aux(sink, - VsmPrimitives::make_report_memory_use_pm(mm, stbl), - flags); - - return ok; - } - bool SetupInterpreter2::register_facets() { scope log(XO_DEBUG(true)); - // VsmStqackFrame // +- VsmApplyFrame // +- VsmEvalArgsFrame @@ -177,6 +117,26 @@ namespace xo { return ok; } + bool + SetupInterpreter2::register_primitives(obj rcx, + InstallSink sink, + InstallFlags flags) + { + scope log(XO_DEBUG(true)); + + obj mm = rcx.allocator(); + StringTable * stbl = rcx.stringtable(); + + bool ok = true; + + ok = ok & (PrimitiveRegistry::install_aux + (sink, + VsmPrimitives::make_report_memory_use_pm(mm, stbl), + flags & InstallFlags::f_generalpurpose)); + + return ok; + } + } /*namespace scm*/ } /*namespace xo*/ diff --git a/xo-numeric/src/numeric/SetupNumeric.cpp b/xo-numeric/src/numeric/SetupNumeric.cpp index c5920505..75a1f1de 100644 --- a/xo-numeric/src/numeric/SetupNumeric.cpp +++ b/xo-numeric/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; }