diff --git a/xo-expression2/cmake/xo_expression2Config.cmake.in b/xo-expression2/cmake/xo_expression2Config.cmake.in index c8cfbcad..15ff18ff 100644 --- a/xo-expression2/cmake/xo_expression2Config.cmake.in +++ b/xo-expression2/cmake/xo_expression2Config.cmake.in @@ -8,7 +8,7 @@ include(CMakeFindDependencyMacro) # find_dependency(xo_gc) find_dependency(reflect) -find_dependency(xo_object2) +find_dependency(xo_procedure2) find_dependency(xo_printable2) find_dependency(xo_flatstring) find_dependency(cmake) diff --git a/xo-expression2/src/expression2/CMakeLists.txt b/xo-expression2/src/expression2/CMakeLists.txt index b8be9468..7a7013de 100644 --- a/xo-expression2/src/expression2/CMakeLists.txt +++ b/xo-expression2/src/expression2/CMakeLists.txt @@ -44,7 +44,7 @@ xo_add_shared_library4(${SELF_LIB} ${PROJECT_NAME}Targets ${PROJECT_VERSION} 1 $ # note: deps here must also appear in cmake/xo_expression2Config.cmake.in xo_dependency(${SELF_LIB} xo_gc) xo_dependency(${SELF_LIB} reflect) -xo_dependency(${SELF_LIB} xo_object2) +xo_dependency(${SELF_LIB} xo_procedure2) xo_dependency(${SELF_LIB} xo_printable2) xo_dependency(${SELF_LIB} xo_flatstring) xo_dependency(${SELF_LIB} subsys) diff --git a/xo-expression2/src/expression2/init_expression2.cpp b/xo-expression2/src/expression2/init_expression2.cpp index e975ef99..1ee5ec9e 100644 --- a/xo-expression2/src/expression2/init_expression2.cpp +++ b/xo-expression2/src/expression2/init_expression2.cpp @@ -7,7 +7,7 @@ #include "expression2_register_facets.hpp" #include "expression2_register_types.hpp" -#include +#include #include namespace xo { @@ -29,7 +29,7 @@ namespace xo { InitEvidence retval; /* direct subsystem deps for xo-object2/ */ - retval ^= InitSubsys::require(); + retval ^= InitSubsys::require(); /* xo-expression2/'s own initialization code */ retval ^= Subsystem::provide("expression2", &init); diff --git a/xo-procedure2/include/xo/procedure2/procedure2_register_facets.hpp b/xo-procedure2/include/xo/procedure2/procedure2_register_facets.hpp new file mode 100644 index 00000000..219da3d4 --- /dev/null +++ b/xo-procedure2/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/xo-procedure2/include/xo/procedure2/procedure2_register_types.hpp b/xo-procedure2/include/xo/procedure2/procedure2_register_types.hpp new file mode 100644 index 00000000..be0170aa --- /dev/null +++ b/xo-procedure2/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/xo-procedure2/src/procedure2/CMakeLists.txt b/xo-procedure2/src/procedure2/CMakeLists.txt index d460e2db..d1699eb0 100644 --- a/xo-procedure2/src/procedure2/CMakeLists.txt +++ b/xo-procedure2/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/xo-procedure2/src/procedure2/init_procedure2.cpp b/xo-procedure2/src/procedure2/init_procedure2.cpp index fc316653..aaa6a021 100644 --- a/xo-procedure2/src/procedure2/init_procedure2.cpp +++ b/xo-procedure2/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/xo-procedure2/src/procedure2/procedure2_register_facets.cpp b/xo-procedure2/src/procedure2/procedure2_register_facets.cpp new file mode 100644 index 00000000..5e7a8755 --- /dev/null +++ b/xo-procedure2/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/xo-procedure2/src/procedure2/procedure2_register_types.cpp b/xo-procedure2/src/procedure2/procedure2_register_types.cpp new file mode 100644 index 00000000..dedceb69 --- /dev/null +++ b/xo-procedure2/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 */