refactor: use GCObjectVisitor api w/ gco_shallow_move

This commit is contained in:
Roland Conybeare 2026-04-06 15:21:48 -04:00
commit 31df51ac8e
8 changed files with 16 additions and 14 deletions

View file

@ -164,7 +164,7 @@ namespace xo {
using token_type = Token;
using ArenaHashMapConfig = xo::map::ArenaHashMapConfig;
using ArenaConfig = xo::mm::ArenaConfig;
using ACollector = xo::mm::ACollector;
//using ACollector = xo::mm::ACollector;
using AGCObject = xo::mm::AGCObject;
using AGCObjectVisitor = xo::mm::AGCObjectVisitor;
using AAllocator = xo::mm::AAllocator;
@ -295,7 +295,7 @@ namespace xo {
///@{
/** not implemented (SchematikaParser not designed to be copyable) **/
DSchematikaParser * shallow_move(obj<ACollector> gc) noexcept;
DSchematikaParser * gco_shallow_move(obj<AGCObjectVisitor> gc) noexcept;
/** forward gc-aware children **/
void visit_gco_children(obj<AGCObjectVisitor> gc) noexcept;

View file

@ -53,8 +53,9 @@ namespace xo {
// const methods
// non-const methods
/** move instance using collector **/
static Opaque shallow_move(DSchematikaParser & self, obj<ACollector> gc) noexcept;
/** move instance using object visitor.
Arguably abusing the word 'visitor' here **/
static Opaque gco_shallow_move(DSchematikaParser & self, obj<AGCObjectVisitor> gc) noexcept;
/** Invoke fn.visit_child(iface,data) for each child GCObject pointer.
Context: provides address of data pointer so it can be updated in place
when @p fn invokes garbage collector reentry point **/