diff --git a/xo-interpreter2/include/xo/interpreter2/SetupInterpreter2.hpp b/xo-interpreter2/include/xo/interpreter2/SetupInterpreter2.hpp new file mode 100644 index 00000000..be751bda --- /dev/null +++ b/xo-interpreter2/include/xo/interpreter2/SetupInterpreter2.hpp @@ -0,0 +1,27 @@ +/** @file SetupInterpreter2.hpp + * + * @author Roland Conybeare, Mar 2026 + **/ + +#pragma once + +#include "PrimitiveRegistry.hpp" +#include + +namespace xo { + namespace scm { + struct SetupInterpreter2 { + public: + using ACollector = xo::mm::ACollector; + + public: + static bool register_facets(); + static bool register_types(obj gc); + static bool register_primitives(obj rcx, + InstallSink sink, + InstallFlags flags); + }; + } +} + +/* end SetupInterpreter2.hpp */ diff --git a/xo-interpreter2/include/xo/interpreter2/interpreter2_register_facets.hpp b/xo-interpreter2/include/xo/interpreter2/interpreter2_register_facets.hpp deleted file mode 100644 index 587f882b..00000000 --- a/xo-interpreter2/include/xo/interpreter2/interpreter2_register_facets.hpp +++ /dev/null @@ -1,15 +0,0 @@ -/** @file interpreter2_register_facets.hpp - * - * @author Roland Conybeare, Feb 2026 - **/ - -#pragma once - -namespace xo { - namespace scm { - /** Register interpreter2 (facet,impl) combinations with FacetRegistry **/ - bool interpreter2_register_facets(); - } -} - -/* end interpreter2_register_facets.hpp */ diff --git a/xo-interpreter2/include/xo/interpreter2/interpreter2_register_primitives.hpp b/xo-interpreter2/include/xo/interpreter2/interpreter2_register_primitives.hpp deleted file mode 100644 index b2e1063b..00000000 --- a/xo-interpreter2/include/xo/interpreter2/interpreter2_register_primitives.hpp +++ /dev/null @@ -1,22 +0,0 @@ -/** @file interpreter2_register_primitives.hpp - * - * @author Roland Conybeare, Mar 2026 - **/ - -#pragma once - -#include "PrimitiveRegistry.hpp" -#include - -namespace xo { - namespace scm { - /** Register primitive-factories **/ - bool interpreter2_register_primitives(obj rcx, - //xo::mm::AAllocator> gc, - //StringTable * stbl, - InstallSink sink, - InstallFlags flags); - } -} - -/* end interpreter2_register_primitives.hpp */ diff --git a/xo-interpreter2/include/xo/interpreter2/interpreter2_register_types.hpp b/xo-interpreter2/include/xo/interpreter2/interpreter2_register_types.hpp deleted file mode 100644 index b545f356..00000000 --- a/xo-interpreter2/include/xo/interpreter2/interpreter2_register_types.hpp +++ /dev/null @@ -1,17 +0,0 @@ -/** @file interpreter2_register_types.hpp - * - * @author Roland Conybeare, Dec 2025 - **/ - -#pragma once - -#include - -namespace xo { - namespace scm { - /** Register interpreter2 (facet,impl) combinations with FacetRegistry **/ - bool interpreter2_register_types(obj gc); - } -} - -/* end interpreter2_register_types.hpp */ diff --git a/xo-interpreter2/src/interpreter2/CMakeLists.txt b/xo-interpreter2/src/interpreter2/CMakeLists.txt index 60974aeb..fd6953dd 100644 --- a/xo-interpreter2/src/interpreter2/CMakeLists.txt +++ b/xo-interpreter2/src/interpreter2/CMakeLists.txt @@ -3,9 +3,7 @@ set(SELF_LIB xo_interpreter2) set(SELF_SRCS init_interpreter2.cpp - interpreter2_register_primitives.cpp - interpreter2_register_facets.cpp - interpreter2_register_types.cpp + SetupInterpreter2.cpp VirtualSchematikaMachine.cpp VsmPrimitives.cpp diff --git a/xo-interpreter2/src/interpreter2/interpreter2_register_facets.cpp b/xo-interpreter2/src/interpreter2/SetupInterpreter2.cpp similarity index 59% rename from xo-interpreter2/src/interpreter2/interpreter2_register_facets.cpp rename to xo-interpreter2/src/interpreter2/SetupInterpreter2.cpp index 24801f66..643ceab2 100644 --- a/xo-interpreter2/src/interpreter2/interpreter2_register_facets.cpp +++ b/xo-interpreter2/src/interpreter2/SetupInterpreter2.cpp @@ -1,10 +1,10 @@ -/** @file interpreter2_register_facets.cpp +/** @file SetupInterpreter2.cpp * - * @author Roland Conybeare, Feb 2026 + * @author Roland Conybeare, Mar 2026 **/ -#include "interpreter2_register_facets.hpp" - +#include "SetupInterpreter2.hpp" +#include "VsmPrimitives.hpp" #include "DPrimitive_gco_2_gco_gco.hpp" #include "VsmDefContFrame.hpp" #include "VsmApplyFrame.hpp" @@ -24,15 +24,77 @@ #include namespace xo { + using xo::mm::ACollector; + using xo::mm::AAllocator; using xo::mm::AGCObject; using xo::print::APrintable; using xo::facet::FacetRegistry; + using xo::facet::impl_for; using xo::reflect::typeseq; 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 - interpreter2_register_facets() + 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)); @@ -101,7 +163,21 @@ namespace xo { return true; } + + bool + SetupInterpreter2::register_types(obj gc) + { + scope log(XO_DEBUG(true)); + + bool ok = true; + + ok &= gc.install_type(impl_for()); + ok &= gc.install_type(impl_for()); + + return ok; + } + } /*namespace scm*/ } /*namespace xo*/ -/* end interpreter2_register_facets.cpp */ +/* end SetupInterpreter2.cpp */ diff --git a/xo-interpreter2/src/interpreter2/init_interpreter2.cpp b/xo-interpreter2/src/interpreter2/init_interpreter2.cpp index fddbf21a..77b997d2 100644 --- a/xo-interpreter2/src/interpreter2/init_interpreter2.cpp +++ b/xo-interpreter2/src/interpreter2/init_interpreter2.cpp @@ -4,28 +4,22 @@ **/ #include "init_interpreter2.hpp" - -#include "interpreter2_register_primitives.hpp" -#include "interpreter2_register_facets.hpp" -#include "interpreter2_register_types.hpp" +#include "SetupInterpreter2.hpp" #include #include namespace xo { - using xo::scm::interpreter2_register_primitives; - using xo::scm::interpreter2_register_facets; - using xo::scm::interpreter2_register_types; + using xo::scm::SetupInterpreter2; using xo::scm::PrimitiveRegistry; using xo::mm::CollectorTypeRegistry; void InitSubsys::init() { - interpreter2_register_facets(); - - CollectorTypeRegistry::instance().register_types(&interpreter2_register_types); - PrimitiveRegistry::instance().register_primitives(&interpreter2_register_primitives); + SetupInterpreter2::register_facets(); + CollectorTypeRegistry::instance().register_types(&SetupInterpreter2::register_types); + PrimitiveRegistry::instance().register_primitives(&SetupInterpreter2::register_primitives); } InitEvidence diff --git a/xo-interpreter2/src/interpreter2/interpreter2_register_primitives.cpp b/xo-interpreter2/src/interpreter2/interpreter2_register_primitives.cpp deleted file mode 100644 index dba9337c..00000000 --- a/xo-interpreter2/src/interpreter2/interpreter2_register_primitives.cpp +++ /dev/null @@ -1,78 +0,0 @@ -/** @file interpreter2_register_primitives.cpp - * - * @author Roland Conybeare, Mar 2026 - **/ - -#include "interpreter2_register_primitives.hpp" -#include "VsmPrimitives.hpp" - -namespace xo { - using xo::mm::AAllocator; - - 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 - interpreter2_register_primitives(obj rcx, - //obj mm, - //StringTable * stbl, - 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; - } - - - } /*namespace scm*/ -} /*namespace xo*/ - -/* end interpreter2_register_primitives.cpp **/ diff --git a/xo-interpreter2/src/interpreter2/interpreter2_register_types.cpp b/xo-interpreter2/src/interpreter2/interpreter2_register_types.cpp deleted file mode 100644 index 54351beb..00000000 --- a/xo-interpreter2/src/interpreter2/interpreter2_register_types.cpp +++ /dev/null @@ -1,36 +0,0 @@ -/** @file interpreter2_register_types.cpp - * - * @author Roland Conybeare, Jan 2026 - **/ - -#include "interpreter2_register_types.hpp" - -#include "VsmApplyFrame.hpp" -#include "VsmEvalArgsFrame.hpp" - -#include - -namespace xo { - using xo::mm::ACollector; - using xo::mm::AGCObject; - using xo::facet::impl_for; - //using xo::facet::typeseq; - using xo::scope; - - namespace scm { - bool - interpreter2_register_types(obj gc) - { - scope log(XO_DEBUG(true)); - - bool ok = true; - - ok &= gc.install_type(impl_for()); - ok &= gc.install_type(impl_for()); - - return ok; - } - } -} /*namespace xo*/ - -/* end interpreter2_register_types.cpp */