/** @file SetupProcedure2.cpp * * @author Roland Conybeare, Jan 2026 **/ #include "SetupProcedure2.hpp" #include "Procedure.hpp" #include "ObjectPrimitives.hpp" #include "GcPrimitives.hpp" #include "SimpleRcx.hpp" #include "Primitive_gco_0.hpp" #include "Primitive_gco_1_gco.hpp" #include "Primitive_gco_2_gco_gco.hpp" #include "Primitive_gco_2_dict_string.hpp" #include "Primitive_gco_3_dict_string_gco.hpp" #include #include #include #include namespace xo { using xo::mm::AAllocator; using xo::facet::FacetRegistry; using xo::facet::impl_for; using xo::facet::typeseq; using xo::print::APrintable; namespace scm { bool SetupProcedure2::register_facets() { scope log(XO_DEBUG(true)); FacetRegistry::register_impl(); FacetRegistry::register_impl(); FacetRegistry::register_impl(); FacetRegistry::register_impl(); FacetRegistry::register_impl(); FacetRegistry::register_impl(); FacetRegistry::register_impl(); FacetRegistry::register_impl(); FacetRegistry::register_impl(); FacetRegistry::register_impl(); FacetRegistry::register_impl(); FacetRegistry::register_impl(); FacetRegistry::register_impl(); FacetRegistry::register_impl(); FacetRegistry::register_impl(); FacetRegistry::register_impl(); log && log(xtag("DSimpleRcx.tseq", typeseq::id())); log && log(xtag("DPrimitive_gco_0.tseq", typeseq::id())); log && log(xtag("DPrimitive_gco_1_gco.tseq", typeseq::id())); log && log(xtag("DPrimitive_gco_2_gco_gco.tseq", typeseq::id())); log && log(xtag("DPrimitive_gco_2_dict_string.tseq", typeseq::id())); log && log(xtag("DPrimitive_gco_3_dict_string_gco.tseq", typeseq::id())); log && log(xtag("ARuntimeContext.tseq", typeseq::id())); log && log(xtag("AProcedure.tseq", typeseq::id())); return true; } bool SetupProcedure2::register_types(obj gc) { scope log(XO_DEBUG(true)); bool ok = true; // (note: don't currently intend to support AGCObject for DSimpleRcx) ok &= gc.install_type(impl_for()); ok &= gc.install_type(impl_for()); ok &= gc.install_type(impl_for()); ok &= gc.install_type(impl_for()); ok &= gc.install_type(impl_for()); return ok; } bool SetupProcedure2::register_primitives(obj rcx, InstallSink sink, InstallFlags flags) { obj mm = rcx.allocator(); StringTable * stbl = rcx.stringtable(); scope log(XO_DEBUG(false)); bool ok = true; ok = ok & (PrimitiveRegistry::install_aux (sink, ObjectPrimitives::make_cwd_pm(mm, stbl), flags & InstallFlags::f_generalpurpose)); ok = ok & (PrimitiveRegistry::install_aux (sink, ObjectPrimitives::make_nth_pm(mm, stbl), flags & InstallFlags::f_generalpurpose)); ok = ok & (PrimitiveRegistry::install_aux (sink, ObjectPrimitives::make_cons_pm(mm, stbl), flags & InstallFlags::f_generalpurpose)); ok = ok & (PrimitiveRegistry::install_aux (sink, ObjectPrimitives::make_set_car_pm(mm, stbl), flags & InstallFlags::f_generalpurpose)); ok = ok & (PrimitiveRegistry::install_aux (sink, ObjectPrimitives::make_dict_make_pm(mm, stbl), flags & InstallFlags::f_generalpurpose)); ok = ok & (PrimitiveRegistry::install_aux (sink, ObjectPrimitives::make_dict_lookup_pm(mm, stbl), flags & InstallFlags::f_generalpurpose)); ok = ok & (PrimitiveRegistry::install_aux (sink, ObjectPrimitives::make_dict_upsert_pm(mm, stbl), flags & InstallFlags::f_generalpurpose)); ok = ok & (PrimitiveRegistry::install_aux (sink, ObjectPrimitives::make_fn_n_args_pm(mm, stbl), flags & InstallFlags::f_generalpurpose)); ok = ok & (PrimitiveRegistry::install_aux (sink, GcPrimitives::make_request_gc_pm(mm, stbl), flags & InstallFlags::f_generalpurpose)); return ok; } } /*namespace scm*/ } /*namespace xo*/ /* end SetupProcedure2.cpp */