/** @file SetupExpression2.cpp * * @author Roland Conybeare, Jan 2026 **/ #include "SetupExpression2.hpp" #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include namespace xo { using xo::mm::AGCObject; using xo::print::APrintable; using xo::facet::FacetRegistry; using xo::facet::TypeRegistry; using xo::facet::typeseq; using xo::facet::impl_for; namespace scm { bool SetupExpression2::register_facets() { scope log(XO_DEBUG(true)); // Expression // +- Constant // +- Variable // +- VarRef // +- DefineExpr // +- ApplyExpr // +- LambdaExpr // +- IfElseExpr // \- SequenceExpr 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(); FacetRegistry::register_impl(); FacetRegistry::register_impl(); FacetRegistry::register_impl(); FacetRegistry::register_impl(); FacetRegistry::register_impl(); FacetRegistry::register_impl(); FacetRegistry::register_impl(); FacetRegistry::register_impl(); // Typename FacetRegistry::register_impl(); FacetRegistry::register_impl(); // SymbolTable // +- LocalSymtab // \- GlobalSymtab FacetRegistry::register_impl(); FacetRegistry::register_impl(); FacetRegistry::register_impl(); FacetRegistry::register_impl(); FacetRegistry::register_impl(); FacetRegistry::register_impl(); // until we register facets TypeRegistry::register_type(); TypeRegistry::register_type(); log && log(xtag("DUniqueString.tseq", typeseq::id())); log && log(xtag("DDefineExpr.tseq", typeseq::id())); log && log(xtag("DVariable.tseq", typeseq::id())); log && log(xtag("DTypename.tseq", typeseq::id())); log && log(xtag("DVarRef.tseq", typeseq::id())); log && log(xtag("DConstant.tseq", typeseq::id())); log && log(xtag("DApplyExpr.tseq", typeseq::id())); log && log(xtag("DLambdaExpr.tseq", typeseq::id())); log && log(xtag("DIfElseExpr.tseq", typeseq::id())); log && log(xtag("DSequenceExpr.tseq", typeseq::id())); log && log(xtag("DGlobalSymtab.tseq", typeseq::id())); log && log(xtag("DLocalSymtab.tseq", typeseq::id())); log && log(xtag("AExpression.tseq", typeseq::id())); log && log(xtag("ASymbolTable.tseq", typeseq::id())); return true; } bool SetupExpression2::register_types(obj gc) { scope log(XO_DEBUG(true)); bool ok = true; 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()); 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()); ok &= gc.install_type(impl_for()); return ok; } } /*namespace scm*/ } /*namespace xo*/ /* end SetupExpression2.cpp */