xo-interpreter2 stack: + reason arg to visit_gco_children()

Helps streamline DX1Collector in xo-gc/.
Want both forward and verify entry points for the same
representation.
This commit is contained in:
Roland Conybeare 2026-04-10 01:10:03 -04:00
commit d14f119a37
102 changed files with 258 additions and 167 deletions

View file

@ -8,7 +8,6 @@
#include "DSyntaxStateMachine.hpp"
#include "syntaxstatetype.hpp"
#include <xo/expression2/ApplyExpr.hpp>
//#include <xo/facet/obj.hpp>
#include <string_view>
@ -66,12 +65,11 @@ namespace xo {
using Super = DSyntaxStateMachine<DApplySsm>;
using TypeDescr = xo::reflect::TypeDescr;
using AGCObjectVisitor = xo::mm::AGCObjectVisitor;
using VisitReason = xo::mm::VisitReason;
using AAllocator = xo::mm::AAllocator;
using DArena = xo::mm::DArena;
using ppindentinfo = xo::print::ppindentinfo;
//using Apply = xo::scm::Apply;
public:
/** @defgroup scm-applyssm-ctors constructors **/
///@{
@ -190,7 +188,8 @@ namespace xo {
///@{
/** gc support: visit gc-aware child pointers **/
void visit_gco_children(obj<AGCObjectVisitor> gc) noexcept;
void visit_gco_children(VisitReason reason,
obj<AGCObjectVisitor> gc) noexcept;
///@}

View file

@ -44,6 +44,7 @@ namespace xo {
using TypeDescr = xo::scm::ASyntaxStateMachine::TypeDescr;
using AGCObjectVisitor = xo::scm::ASyntaxStateMachine::AGCObjectVisitor;
using AGCObject = xo::scm::ASyntaxStateMachine::AGCObject;
using VisitReason = xo::scm::ASyntaxStateMachine::VisitReason;
using Copaque = xo::scm::ASyntaxStateMachine::Copaque;
using Opaque = xo::scm::ASyntaxStateMachine::Opaque;
///@}
@ -77,7 +78,7 @@ namespace xo {
/** update state machine for nested quoted literal @p lit **/
static void on_quoted_literal(DApplySsm & self, obj<AGCObject> lit, ParserStateMachine * p_psm);
/** gc support: visit immediate gc-aware child pointers with @p gc. Call gc.visit_child() for each **/
static void visit_gco_children(DApplySsm & self, obj<AGCObjectVisitor> gc);
static void visit_gco_children(DApplySsm & self, VisitReason reason, obj<AGCObjectVisitor> gc);
///@}
};