From 3da2b9ad2b7541bca291c4af62b36bacb0a266be Mon Sep 17 00:00:00 2001 From: Roland Conybeare Date: Mon, 6 Apr 2026 15:21:48 -0400 Subject: [PATCH] refactor: use GCObjectVisitor api w/ gco_shallow_move --- include/xo/type/DArrayType.hpp | 7 +++---- include/xo/type/DAtomicType.hpp | 7 +++---- include/xo/type/DFunctionType.hpp | 7 +++---- include/xo/type/DListType.hpp | 7 +++---- include/xo/type/array/IGCObject_DArrayType.hpp | 5 +++-- include/xo/type/atomic/IGCObject_DAtomicType.hpp | 5 +++-- include/xo/type/function/IGCObject_DFunctionType.hpp | 5 +++-- include/xo/type/list/IGCObject_DListType.hpp | 5 +++-- include/xo/type/typevar/DTypeVarRef.hpp | 7 +++---- include/xo/type/typevar/IGCObject_DTypeVarRef.hpp | 5 +++-- src/type/DArrayType.cpp | 8 +------- src/type/DAtomicType.cpp | 8 +------- src/type/DFunctionType.cpp | 8 +------- src/type/DListType.cpp | 8 +------- src/type/DTypeVarRef.cpp | 8 +------- src/type/IGCObject_DArrayType.cpp | 4 ++-- src/type/IGCObject_DAtomicType.cpp | 4 ++-- src/type/IGCObject_DFunctionType.cpp | 4 ++-- src/type/IGCObject_DListType.cpp | 4 ++-- src/type/IGCObject_DTypeVarRef.cpp | 4 ++-- 20 files changed, 45 insertions(+), 75 deletions(-) diff --git a/include/xo/type/DArrayType.hpp b/include/xo/type/DArrayType.hpp index 92a9eca..0f12803 100644 --- a/include/xo/type/DArrayType.hpp +++ b/include/xo/type/DArrayType.hpp @@ -7,7 +7,7 @@ #include "Type.hpp" #include "Metatype.hpp" -#include +//#include #include #include @@ -19,7 +19,7 @@ namespace xo { **/ class DArrayType { public: - using ACollector = xo::mm::ACollector; + //using ACollector = xo::mm::ACollector; using AGCObjectVisitor = xo::mm::AGCObjectVisitor; using AAllocator = xo::mm::AAllocator; using TypeDescr = xo::reflect::TypeDescr; @@ -43,8 +43,7 @@ namespace xo { ///@} /** @defgroup xo-scm-arraytype-gcobject-facet **/ ///@{ - std::size_t shallow_size() const noexcept; - DArrayType * shallow_move(obj gc) noexcept; + DArrayType * gco_shallow_move(obj gc) noexcept; void visit_gco_children(obj gc) noexcept; ///@} diff --git a/include/xo/type/DAtomicType.hpp b/include/xo/type/DAtomicType.hpp index 3274b88..1338c1d 100644 --- a/include/xo/type/DAtomicType.hpp +++ b/include/xo/type/DAtomicType.hpp @@ -7,7 +7,7 @@ #include "Type.hpp" #include "Metatype.hpp" -#include +//#include #include #include @@ -22,7 +22,7 @@ namespace xo { **/ class DAtomicType { public: - using ACollector = xo::mm::ACollector; + //using ACollector = xo::mm::ACollector; using AGCObjectVisitor = xo::mm::AGCObjectVisitor; using AAllocator = xo::mm::AAllocator; using TypeDescr = xo::reflect::TypeDescr; @@ -44,8 +44,7 @@ namespace xo { ///@} /** @defgroup xo-scm-atomictype-gcobject-facet **/ ///@{ - std::size_t shallow_size() const noexcept; - DAtomicType * shallow_move(obj gc) noexcept; + DAtomicType * gco_shallow_move(obj gc) noexcept; void visit_gco_children(obj gc) noexcept; ///@} diff --git a/include/xo/type/DFunctionType.hpp b/include/xo/type/DFunctionType.hpp index 66b92c1..19d8bbe 100644 --- a/include/xo/type/DFunctionType.hpp +++ b/include/xo/type/DFunctionType.hpp @@ -8,7 +8,7 @@ #include "Type.hpp" #include "Metatype.hpp" #include -#include +//#include #include #include @@ -20,7 +20,7 @@ namespace xo { **/ class DFunctionType { public: - 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; @@ -65,8 +65,7 @@ namespace xo { ///@} /** @defgroup xo-scm-arraytype-gcobject-facet **/ ///@{ - std::size_t shallow_size() const noexcept; - DFunctionType * shallow_move(obj gc) noexcept; + DFunctionType * gco_shallow_move(obj gc) noexcept; void visit_gco_children(obj gc) noexcept; ///@} diff --git a/include/xo/type/DListType.hpp b/include/xo/type/DListType.hpp index c6fa030..7ca7517 100644 --- a/include/xo/type/DListType.hpp +++ b/include/xo/type/DListType.hpp @@ -8,7 +8,7 @@ #include "Type.hpp" #include "Metatype.hpp" #include -#include +//#include #include #include @@ -24,7 +24,7 @@ namespace xo { class DListType { public: using TypeDescr = xo::reflect::TypeDescr; - using ACollector = xo::mm::ACollector; + //using ACollector = xo::mm::ACollector; using AGCObjectVisitor = xo::mm::AGCObjectVisitor; using AAllocator = xo::mm::AAllocator; @@ -51,8 +51,7 @@ namespace xo { ///@} /** @defgroup xo-scm-listtype-gcobject-facet **/ ///@{ - std::size_t shallow_size() const noexcept; - DListType * shallow_move(obj gc) noexcept; + DListType * gco_shallow_move(obj gc) noexcept; void visit_gco_children(obj gc) noexcept; ///@} diff --git a/include/xo/type/array/IGCObject_DArrayType.hpp b/include/xo/type/array/IGCObject_DArrayType.hpp index af44afb..f03e6b9 100644 --- a/include/xo/type/array/IGCObject_DArrayType.hpp +++ b/include/xo/type/array/IGCObject_DArrayType.hpp @@ -51,8 +51,9 @@ namespace xo { // const methods // non-const methods - /** move instance using collector **/ - static Opaque shallow_move(DArrayType & self, obj gc) noexcept; + /** move instance using object visitor. +Arguably abusing the word 'visitor' here **/ + static Opaque gco_shallow_move(DArrayType & self, obj 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 **/ diff --git a/include/xo/type/atomic/IGCObject_DAtomicType.hpp b/include/xo/type/atomic/IGCObject_DAtomicType.hpp index 0acce5a..dbba8a3 100644 --- a/include/xo/type/atomic/IGCObject_DAtomicType.hpp +++ b/include/xo/type/atomic/IGCObject_DAtomicType.hpp @@ -51,8 +51,9 @@ namespace xo { // const methods // non-const methods - /** move instance using collector **/ - static Opaque shallow_move(DAtomicType & self, obj gc) noexcept; + /** move instance using object visitor. +Arguably abusing the word 'visitor' here **/ + static Opaque gco_shallow_move(DAtomicType & self, obj 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 **/ diff --git a/include/xo/type/function/IGCObject_DFunctionType.hpp b/include/xo/type/function/IGCObject_DFunctionType.hpp index c368f57..6840ffd 100644 --- a/include/xo/type/function/IGCObject_DFunctionType.hpp +++ b/include/xo/type/function/IGCObject_DFunctionType.hpp @@ -51,8 +51,9 @@ namespace xo { // const methods // non-const methods - /** move instance using collector **/ - static Opaque shallow_move(DFunctionType & self, obj gc) noexcept; + /** move instance using object visitor. +Arguably abusing the word 'visitor' here **/ + static Opaque gco_shallow_move(DFunctionType & self, obj 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 **/ diff --git a/include/xo/type/list/IGCObject_DListType.hpp b/include/xo/type/list/IGCObject_DListType.hpp index 07903f0..752bb76 100644 --- a/include/xo/type/list/IGCObject_DListType.hpp +++ b/include/xo/type/list/IGCObject_DListType.hpp @@ -51,8 +51,9 @@ namespace xo { // const methods // non-const methods - /** move instance using collector **/ - static Opaque shallow_move(DListType & self, obj gc) noexcept; + /** move instance using object visitor. +Arguably abusing the word 'visitor' here **/ + static Opaque gco_shallow_move(DListType & self, obj 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 **/ diff --git a/include/xo/type/typevar/DTypeVarRef.hpp b/include/xo/type/typevar/DTypeVarRef.hpp index 9e1d6b9..d1f8258 100644 --- a/include/xo/type/typevar/DTypeVarRef.hpp +++ b/include/xo/type/typevar/DTypeVarRef.hpp @@ -7,7 +7,7 @@ #include "Type.hpp" #include "Metatype.hpp" -#include +//#include #include #include @@ -22,7 +22,7 @@ namespace xo { **/ class DTypeVarRef { public: - using ACollector = xo::mm::ACollector; + //using ACollector = xo::mm::ACollector; using AGCObjectVisitor = xo::mm::AGCObjectVisitor; using AAllocator = xo::mm::AAllocator; using TypeDescr = xo::reflect::TypeDescr; @@ -54,8 +54,7 @@ namespace xo { ///@} /** @defgroup xo-scm-atomictype-gcobject-facet **/ ///@{ - std::size_t shallow_size() const noexcept; - DTypeVarRef * shallow_move(obj gc) noexcept; + DTypeVarRef * gco_shallow_move(obj gc) noexcept; void visit_gco_children(obj gc) noexcept; ///@} diff --git a/include/xo/type/typevar/IGCObject_DTypeVarRef.hpp b/include/xo/type/typevar/IGCObject_DTypeVarRef.hpp index a943a3c..d837afa 100644 --- a/include/xo/type/typevar/IGCObject_DTypeVarRef.hpp +++ b/include/xo/type/typevar/IGCObject_DTypeVarRef.hpp @@ -51,8 +51,9 @@ namespace xo { // const methods // non-const methods - /** move instance using collector **/ - static Opaque shallow_move(DTypeVarRef & self, obj gc) noexcept; + /** move instance using object visitor. +Arguably abusing the word 'visitor' here **/ + static Opaque gco_shallow_move(DTypeVarRef & self, obj 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 **/ diff --git a/src/type/DArrayType.cpp b/src/type/DArrayType.cpp index 4a172f9..891a83c 100644 --- a/src/type/DArrayType.cpp +++ b/src/type/DArrayType.cpp @@ -76,14 +76,8 @@ namespace xo { // ----- gcobject facet ----- - std::size_t - DArrayType::shallow_size() const noexcept - { - return sizeof(*this); - } - DArrayType * - DArrayType::shallow_move(obj gc) noexcept + DArrayType::gco_shallow_move(obj gc) noexcept { return gc.std_move_for(this); } diff --git a/src/type/DAtomicType.cpp b/src/type/DAtomicType.cpp index 070683b..6c02434 100644 --- a/src/type/DAtomicType.cpp +++ b/src/type/DAtomicType.cpp @@ -54,14 +54,8 @@ namespace xo { // ----- GCObject facet ----- - std::size_t - DAtomicType::shallow_size() const noexcept - { - return sizeof(DAtomicType); - } - DAtomicType * - DAtomicType::shallow_move(obj gc) noexcept + DAtomicType::gco_shallow_move(obj gc) noexcept { return gc.std_move_for(this); } diff --git a/src/type/DFunctionType.cpp b/src/type/DFunctionType.cpp index b27e9ac..934fae1 100644 --- a/src/type/DFunctionType.cpp +++ b/src/type/DFunctionType.cpp @@ -87,14 +87,8 @@ namespace xo { // ----- gcobject facet ----- - std::size_t - DFunctionType::shallow_size() const noexcept - { - return sizeof(*this); - } - DFunctionType * - DFunctionType::shallow_move(obj gc) noexcept + DFunctionType::gco_shallow_move(obj gc) noexcept { return gc.std_move_for(this); } diff --git a/src/type/DListType.cpp b/src/type/DListType.cpp index 0ffdf8d..20a6930 100644 --- a/src/type/DListType.cpp +++ b/src/type/DListType.cpp @@ -81,14 +81,8 @@ namespace xo { // ----- gcobject facet ----- - std::size_t - DListType::shallow_size() const noexcept - { - return sizeof(*this); - } - DListType * - DListType::shallow_move(obj gc) noexcept + DListType::gco_shallow_move(obj gc) noexcept { return gc.std_move_for(this); } diff --git a/src/type/DTypeVarRef.cpp b/src/type/DTypeVarRef.cpp index a540c62..d9f3816 100644 --- a/src/type/DTypeVarRef.cpp +++ b/src/type/DTypeVarRef.cpp @@ -75,14 +75,8 @@ namespace xo { // ----- GCObject facet ----- - std::size_t - DTypeVarRef::shallow_size() const noexcept - { - return sizeof(DTypeVarRef); - } - DTypeVarRef * - DTypeVarRef::shallow_move(obj gc) noexcept + DTypeVarRef::gco_shallow_move(obj gc) noexcept { return gc.std_move_for(this); } diff --git a/src/type/IGCObject_DArrayType.cpp b/src/type/IGCObject_DArrayType.cpp index 3483c40..d778c3a 100644 --- a/src/type/IGCObject_DArrayType.cpp +++ b/src/type/IGCObject_DArrayType.cpp @@ -16,9 +16,9 @@ namespace xo { namespace scm { auto - IGCObject_DArrayType::shallow_move(DArrayType & self, obj gc) noexcept -> Opaque + IGCObject_DArrayType::gco_shallow_move(DArrayType & self, obj gc) noexcept -> Opaque { - return self.shallow_move(gc); + return self.gco_shallow_move(gc); } auto IGCObject_DArrayType::visit_gco_children(DArrayType & self, obj fn) noexcept -> void diff --git a/src/type/IGCObject_DAtomicType.cpp b/src/type/IGCObject_DAtomicType.cpp index 2d891ef..13b4a83 100644 --- a/src/type/IGCObject_DAtomicType.cpp +++ b/src/type/IGCObject_DAtomicType.cpp @@ -16,9 +16,9 @@ namespace xo { namespace scm { auto - IGCObject_DAtomicType::shallow_move(DAtomicType & self, obj gc) noexcept -> Opaque + IGCObject_DAtomicType::gco_shallow_move(DAtomicType & self, obj gc) noexcept -> Opaque { - return self.shallow_move(gc); + return self.gco_shallow_move(gc); } auto IGCObject_DAtomicType::visit_gco_children(DAtomicType & self, obj fn) noexcept -> void diff --git a/src/type/IGCObject_DFunctionType.cpp b/src/type/IGCObject_DFunctionType.cpp index 36d76b4..65bdd67 100644 --- a/src/type/IGCObject_DFunctionType.cpp +++ b/src/type/IGCObject_DFunctionType.cpp @@ -16,9 +16,9 @@ namespace xo { namespace scm { auto - IGCObject_DFunctionType::shallow_move(DFunctionType & self, obj gc) noexcept -> Opaque + IGCObject_DFunctionType::gco_shallow_move(DFunctionType & self, obj gc) noexcept -> Opaque { - return self.shallow_move(gc); + return self.gco_shallow_move(gc); } auto IGCObject_DFunctionType::visit_gco_children(DFunctionType & self, obj fn) noexcept -> void diff --git a/src/type/IGCObject_DListType.cpp b/src/type/IGCObject_DListType.cpp index 68130a8..032a3f5 100644 --- a/src/type/IGCObject_DListType.cpp +++ b/src/type/IGCObject_DListType.cpp @@ -16,9 +16,9 @@ namespace xo { namespace scm { auto - IGCObject_DListType::shallow_move(DListType & self, obj gc) noexcept -> Opaque + IGCObject_DListType::gco_shallow_move(DListType & self, obj gc) noexcept -> Opaque { - return self.shallow_move(gc); + return self.gco_shallow_move(gc); } auto IGCObject_DListType::visit_gco_children(DListType & self, obj fn) noexcept -> void diff --git a/src/type/IGCObject_DTypeVarRef.cpp b/src/type/IGCObject_DTypeVarRef.cpp index 3ff82f3..8c5422d 100644 --- a/src/type/IGCObject_DTypeVarRef.cpp +++ b/src/type/IGCObject_DTypeVarRef.cpp @@ -16,9 +16,9 @@ namespace xo { namespace scm { auto - IGCObject_DTypeVarRef::shallow_move(DTypeVarRef & self, obj gc) noexcept -> Opaque + IGCObject_DTypeVarRef::gco_shallow_move(DTypeVarRef & self, obj gc) noexcept -> Opaque { - return self.shallow_move(gc); + return self.gco_shallow_move(gc); } auto IGCObject_DTypeVarRef::visit_gco_children(DTypeVarRef & self, obj fn) noexcept -> void