From 9a52d270bd9a8b76dff39369fae9fd640c3d6bf1 Mon Sep 17 00:00:00 2001 From: Roland Conybeare Date: Mon, 26 Jan 2026 16:05:37 -0500 Subject: [PATCH] init dep handling for xo-expression2 -> xo-procedure2 --- .../procedure2/procedure2_register_facets.hpp | 17 ++++++++++ .../procedure2/procedure2_register_types.hpp | 17 ++++++++++ src/procedure2/CMakeLists.txt | 2 ++ src/procedure2/init_procedure2.cpp | 16 +++++++-- src/procedure2/procedure2_register_facets.cpp | 33 +++++++++++++++++++ src/procedure2/procedure2_register_types.cpp | 33 +++++++++++++++++++ 6 files changed, 115 insertions(+), 3 deletions(-) create mode 100644 include/xo/procedure2/procedure2_register_facets.hpp create mode 100644 include/xo/procedure2/procedure2_register_types.hpp create mode 100644 src/procedure2/procedure2_register_facets.cpp create mode 100644 src/procedure2/procedure2_register_types.cpp diff --git a/include/xo/procedure2/procedure2_register_facets.hpp b/include/xo/procedure2/procedure2_register_facets.hpp new file mode 100644 index 0000000..219da3d --- /dev/null +++ b/include/xo/procedure2/procedure2_register_facets.hpp @@ -0,0 +1,17 @@ +/** @file procedure2_register_facets.hpp + * + * @author Roland Conybeare, Jan 2026 + **/ + +#pragma once + +#include + +namespace xo { + namespace scm { + /** Register procedure2 (facet,impl) combinations with FacetRegistry **/ + bool procedure2_register_facets(); + } +} + +/* end procedure2_register_facets.hpp */ diff --git a/include/xo/procedure2/procedure2_register_types.hpp b/include/xo/procedure2/procedure2_register_types.hpp new file mode 100644 index 0000000..be0170a --- /dev/null +++ b/include/xo/procedure2/procedure2_register_types.hpp @@ -0,0 +1,17 @@ +/** @file procedure2_register_types.hpp + * + * @author Roland Conybeare, Dec 2025 + **/ + +#pragma once + +#include + +namespace xo { + namespace scm { + /** Register gc-aware (AGCObject,DRepr) combinations with garbage collector @p gc **/ + bool procedure2_register_types(obj gc); + } +} + +/* end procedure2_register_types.hpp */ diff --git a/src/procedure2/CMakeLists.txt b/src/procedure2/CMakeLists.txt index d460e2d..d1699eb 100644 --- a/src/procedure2/CMakeLists.txt +++ b/src/procedure2/CMakeLists.txt @@ -4,6 +4,8 @@ set(SELF_LIB xo_procedure2) set(SELF_SRCS init_procedure2.cpp init_primitives.cpp + procedure2_register_types.cpp + procedure2_register_facets.cpp DPrimitive.cpp IRuntimeContext_Any.cpp IProcedure_Any.cpp diff --git a/src/procedure2/init_procedure2.cpp b/src/procedure2/init_procedure2.cpp index fc31665..aaa6a02 100644 --- a/src/procedure2/init_procedure2.cpp +++ b/src/procedure2/init_procedure2.cpp @@ -5,16 +5,23 @@ #include "init_procedure2.hpp" #include "init_primitives.hpp" -//#include "procedure2_register_facets.hpp" -//#include "procedure2_register_types.hpp" +#include "procedure2_register_facets.hpp" +#include "procedure2_register_types.hpp" + +#include #include namespace xo { - using xo::scm::Primitives; + using xo::scm::procedure2_register_facets; + using xo::scm::procedure2_register_types; + using xo::mm::CollectorTypeRegistry; void InitSubsys::init() { + procedure2_register_facets(); + + CollectorTypeRegistry::instance().register_types(&procedure2_register_types); } InitEvidence @@ -22,6 +29,9 @@ namespace xo { { InitEvidence retval; + /* recursive subsystem deps for xo-object2/ */ + retval ^= InitSubsys::require(); + /* xo-procedure2/'s own initialization code */ retval ^= Subsystem::provide("procedure2", &init); diff --git a/src/procedure2/procedure2_register_facets.cpp b/src/procedure2/procedure2_register_facets.cpp new file mode 100644 index 0000000..5e7a875 --- /dev/null +++ b/src/procedure2/procedure2_register_facets.cpp @@ -0,0 +1,33 @@ +/** @file procedure2_register_facets.cpp + * + * @author Roland Conybeare, Jan 2026 + **/ + +#include "DPrimitive_gco_2_gco_gco.hpp" +#include "detail/IGCObject_DPrimitive_gco_2_gco_gco.hpp" + +#include +#include +#include + +namespace xo { + using xo::facet::FacetRegistry; + using xo::facet::typeseq; + + namespace scm { + bool + procedure2_register_facets() + { + scope log(XO_DEBUG(true)); + + FacetRegistry::register_impl(); + + log && log(xtag("DPrimitive_gco_2_gco_gco.tseq", typeseq::id())); + + return true; + } + + } /*namespace scm*/ +} /*namespace xo*/ + +/* end procedure2_register_facets.cpp */ diff --git a/src/procedure2/procedure2_register_types.cpp b/src/procedure2/procedure2_register_types.cpp new file mode 100644 index 0000000..dedceb6 --- /dev/null +++ b/src/procedure2/procedure2_register_types.cpp @@ -0,0 +1,33 @@ +/** @file procedure2_register_types.cpp + * + * @author Roland Conybeare, Jan 2026 + **/ + +#include "procedure2_register_types.hpp" + +#include "detail/IGCObject_DPrimitive_gco_2_gco_gco.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 + procedure2_register_types(obj gc) + { + scope log(XO_DEBUG(true)); + + bool ok = true; + + ok &= gc.install_type(impl_for()); + + return ok; + } + } +} /*namespace xo*/ + +/* end procedure2_register_types.cpp */