diff --git a/include/xo/stringtable2/DString.hpp b/include/xo/stringtable2/DString.hpp index 7d736a3..73e165d 100644 --- a/include/xo/stringtable2/DString.hpp +++ b/include/xo/stringtable2/DString.hpp @@ -50,6 +50,8 @@ namespace xo { //using ACollector = xo::mm::ACollector; /** object visitor (garbage collector proxy) **/ using AGCObjectVisitor = xo::mm::AGCObjectVisitor; + /** visitor hint **/ + using VisitReason = xo::mm::VisitReason; /** ppindentinfo for APrintable **/ using ppindentinfo = xo::print::ppindentinfo; ///@} @@ -251,7 +253,7 @@ namespace xo { /** fixup child pointers (trivial for DString, no children) * note: cref so we can use forward decl **/ - void visit_gco_children(obj gc) noexcept; + void visit_gco_children(VisitReason reason, obj gc) noexcept; ///@} diff --git a/include/xo/stringtable2/DUniqueString.hpp b/include/xo/stringtable2/DUniqueString.hpp index 27a364e..fedf669 100644 --- a/include/xo/stringtable2/DUniqueString.hpp +++ b/include/xo/stringtable2/DUniqueString.hpp @@ -28,6 +28,7 @@ namespace xo { using AAllocator = xo::mm::AAllocator; using ACollector = xo::mm::ACollector; using AGCObjectVisitor = xo::mm::AGCObjectVisitor; + using VisitReason = xo::mm::VisitReason; using size_type = DString::size_type; using ppindentinfo = xo::print::ppindentinfo; @@ -93,7 +94,7 @@ namespace xo { DUniqueString * gco_shallow_move(obj gc) noexcept; /** fixup child pointers (trivial for DUniqueString, no gc-owned children **/ - void visit_gco_children(obj gc) noexcept; + void visit_gco_children(VisitReason reason, obj gc) noexcept; ///@} diff --git a/include/xo/stringtable2/string/IGCObject_DString.hpp b/include/xo/stringtable2/string/IGCObject_DString.hpp index f35b0a5..e9c15f4 100644 --- a/include/xo/stringtable2/string/IGCObject_DString.hpp +++ b/include/xo/stringtable2/string/IGCObject_DString.hpp @@ -45,6 +45,7 @@ namespace xo { using AAllocator = xo::mm::AGCObject::AAllocator; using ACollector = xo::mm::AGCObject::ACollector; using AGCObjectVisitor = xo::mm::AGCObject::AGCObjectVisitor; + using VisitReason = xo::mm::AGCObject::VisitReason; using Copaque = xo::mm::AGCObject::Copaque; using Opaque = xo::mm::AGCObject::Opaque; ///@} @@ -59,7 +60,7 @@ Arguably abusing the word 'visitor' here **/ /** 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 **/ - static void visit_gco_children(DString & self, obj fn) noexcept; + static void visit_gco_children(DString & self, VisitReason reason, obj fn) noexcept; ///@} }; diff --git a/include/xo/stringtable2/uniquestring/IGCObject_DUniqueString.hpp b/include/xo/stringtable2/uniquestring/IGCObject_DUniqueString.hpp index 5771e05..77c0ea6 100644 --- a/include/xo/stringtable2/uniquestring/IGCObject_DUniqueString.hpp +++ b/include/xo/stringtable2/uniquestring/IGCObject_DUniqueString.hpp @@ -45,6 +45,7 @@ namespace xo { using AAllocator = xo::mm::AGCObject::AAllocator; using ACollector = xo::mm::AGCObject::ACollector; using AGCObjectVisitor = xo::mm::AGCObject::AGCObjectVisitor; + using VisitReason = xo::mm::AGCObject::VisitReason; using Copaque = xo::mm::AGCObject::Copaque; using Opaque = xo::mm::AGCObject::Opaque; ///@} @@ -59,7 +60,7 @@ Arguably abusing the word 'visitor' here **/ /** 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 **/ - static void visit_gco_children(DUniqueString & self, obj fn) noexcept; + static void visit_gco_children(DUniqueString & self, VisitReason reason, obj fn) noexcept; ///@} }; diff --git a/src/stringtable2/DString.cpp b/src/stringtable2/DString.cpp index 1b9ce48..30bfb39 100644 --- a/src/stringtable2/DString.cpp +++ b/src/stringtable2/DString.cpp @@ -167,7 +167,7 @@ namespace xo { } void - DString::visit_gco_children(obj) noexcept + DString::visit_gco_children(VisitReason, obj) noexcept { // no-op. no children! } diff --git a/src/stringtable2/DUniqueString.cpp b/src/stringtable2/DUniqueString.cpp index 98371ad..bc63cf0 100644 --- a/src/stringtable2/DUniqueString.cpp +++ b/src/stringtable2/DUniqueString.cpp @@ -109,7 +109,7 @@ namespace xo { } void - DUniqueString::visit_gco_children(obj) noexcept + DUniqueString::visit_gco_children(VisitReason, obj) noexcept { // no-op -- childless! } diff --git a/src/stringtable2/IGCObject_DString.cpp b/src/stringtable2/IGCObject_DString.cpp index 716c043..a3a384b 100644 --- a/src/stringtable2/IGCObject_DString.cpp +++ b/src/stringtable2/IGCObject_DString.cpp @@ -21,9 +21,9 @@ namespace xo { return self.gco_shallow_move(gc); } auto - IGCObject_DString::visit_gco_children(DString & self, obj fn) noexcept -> void + IGCObject_DString::visit_gco_children(DString & self, VisitReason reason, obj fn) noexcept -> void { - self.visit_gco_children(fn); + self.visit_gco_children(reason, fn); } } /*namespace scm*/ diff --git a/src/stringtable2/IGCObject_DUniqueString.cpp b/src/stringtable2/IGCObject_DUniqueString.cpp index e43fc8b..88fbaaa 100644 --- a/src/stringtable2/IGCObject_DUniqueString.cpp +++ b/src/stringtable2/IGCObject_DUniqueString.cpp @@ -21,9 +21,9 @@ namespace xo { return self.gco_shallow_move(gc); } auto - IGCObject_DUniqueString::visit_gco_children(DUniqueString & self, obj fn) noexcept -> void + IGCObject_DUniqueString::visit_gco_children(DUniqueString & self, VisitReason reason, obj fn) noexcept -> void { - self.visit_gco_children(fn); + self.visit_gco_children(reason, fn); } } /*namespace scm*/