refactor: rename shallow_copy -> shallow_move + streamline

Use RCollector.std_copy_for where appropriate
This commit is contained in:
Roland Conybeare 2026-04-04 16:33:35 -04:00
commit 4e4687bc2a
7 changed files with 15 additions and 15 deletions

View file

@ -62,7 +62,7 @@
doc: ["move instance using allocator"], doc: ["move instance using allocator"],
return_type: "Opaque", return_type: "Opaque",
args:[ args:[
{type: "obj<AAllocator>", name: "mm"}, {type: "obj<ACollector>", name: "gc"},
], ],
const: true, const: true,
noexcept: true, noexcept: true,

View file

@ -67,7 +67,7 @@ public:
// nonconst methods // nonconst methods
/** move instance using allocator **/ /** move instance using allocator **/
virtual Opaque shallow_move(Opaque data, obj<AAllocator> mm) const noexcept = 0; virtual Opaque shallow_move(Opaque data, obj<ACollector> gc) const noexcept = 0;
/** during GC: forward immdiate children **/ /** during GC: forward immdiate children **/
virtual size_type forward_children(Opaque data, obj<ACollector> gc) const noexcept = 0; virtual size_type forward_children(Opaque data, obj<ACollector> gc) const noexcept = 0;
///@} ///@}

View file

@ -64,7 +64,7 @@ namespace mm {
[[noreturn]] size_type shallow_size(Copaque) const noexcept override { _fatal(); } [[noreturn]] size_type shallow_size(Copaque) const noexcept override { _fatal(); }
// nonconst methods // nonconst methods
[[noreturn]] Opaque shallow_move(Opaque, obj<AAllocator>) const noexcept override; [[noreturn]] Opaque shallow_move(Opaque, obj<ACollector>) const noexcept override;
[[noreturn]] size_type forward_children(Opaque, obj<ACollector>) const noexcept override; [[noreturn]] size_type forward_children(Opaque, obj<ACollector>) const noexcept override;
///@} ///@}

View file

@ -54,8 +54,8 @@ namespace mm {
} }
// non-const methods // non-const methods
Opaque shallow_move(Opaque data, obj<AAllocator> mm) const noexcept override { Opaque shallow_move(Opaque data, obj<ACollector> gc) const noexcept override {
return I::shallow_move(_dcast(data), mm); return I::shallow_move(_dcast(data), gc);
} }
size_type forward_children(Opaque data, obj<ACollector> gc) const noexcept override { size_type forward_children(Opaque data, obj<ACollector> gc) const noexcept override {
return I::forward_children(_dcast(data), gc); return I::forward_children(_dcast(data), gc);

View file

@ -52,38 +52,38 @@ public:
void * alloc_copy_for(const T * src) noexcept { void * alloc_copy_for(const T * src) noexcept {
return O::iface()->alloc_copy(O::data(), (std::byte *)const_cast<T *>(src)); return O::iface()->alloc_copy(O::data(), (std::byte *)const_cast<T *>(src));
} }
/** convenience template for move-constructible T (this is common) **/ /** convenience template for move-constructible T (this is common) **/
template <typename T> template <typename T>
void * std_copy_for(const T * src) noexcept { T * std_copy_for(T * src) noexcept {
void * mem = this->alloc_copy_for(src); void * mem = this->alloc_copy_for(src);
if (mem) { if (mem) {
return new (mem) T(std::move(*src)); return new (mem) T(std::move(*src));
} }
return nullptr; return nullptr;
} }
/** forward faceted object pointer in place. Defined in GCObject.hpp to avoid #include cycle **/ /** forward faceted object pointer in place. Defined in GCObject.hpp to avoid #include cycle **/
template <typename DRepr> template <typename DRepr>
void forward_inplace(obj<AGCObject,DRepr> * p_obj); void forward_inplace(obj<AGCObject,DRepr> * p_obj);
/** another convenience template for forwarding. /** another convenience template for forwarding.
* Defined in RGCObject.hpp to avoid #include cycle. * Defined in RGCObject.hpp to avoid #include cycle.
**/ **/
template <typename DRepr> template <typename DRepr>
void forward_inplace(DRepr ** pp_repr); void forward_inplace(DRepr ** pp_repr);
/** convenience template where pointer requires pivot **/ /** convenience template where pointer requires pivot **/
template <typename AFacet, typename DRepr> template <typename AFacet, typename DRepr>
requires (!std::is_same_v<AFacet, AGCObject>) requires (!std::is_same_v<AFacet, AGCObject>)
void forward_pivot_inplace(obj<AFacet,DRepr> * p_obj); void forward_pivot_inplace(obj<AFacet,DRepr> * p_obj);
/** add root @p p_root **/ /** add root @p p_root **/
template<typename DRepr> template<typename DRepr>
void add_gc_root(obj<AGCObject, DRepr> * p_root) { void add_gc_root(obj<AGCObject, DRepr> * p_root) {
O::iface()->add_gc_root_poly(O::data(), (obj<AGCObject> *)p_root); O::iface()->add_gc_root_poly(O::data(), (obj<AGCObject> *)p_root);
} }
/** remove root @p p_root **/ /** remove root @p p_root **/
template <typename DRepr> template <typename DRepr>
void remove_gc_root(obj<AGCObject, DRepr> * p_root) { void remove_gc_root(obj<AGCObject, DRepr> * p_root) {

View file

@ -60,8 +60,8 @@ public:
} }
// non-const methods (still const in router!) // non-const methods (still const in router!)
Opaque shallow_move(obj<AAllocator> mm) noexcept { Opaque shallow_move(obj<ACollector> gc) noexcept {
return O::iface()->shallow_move(O::data(), mm); return O::iface()->shallow_move(O::data(), gc);
} }
size_type forward_children(obj<ACollector> gc) noexcept { size_type forward_children(obj<ACollector> gc) noexcept {
return O::iface()->forward_children(O::data(), gc); return O::iface()->forward_children(O::data(), gc);

View file

@ -36,7 +36,7 @@ IGCObject_Any::_valid
// nonconst methods // nonconst methods
auto auto
IGCObject_Any::shallow_move(Opaque, obj<AAllocator>) const noexcept -> Opaque IGCObject_Any::shallow_move(Opaque, obj<ACollector>) const noexcept -> Opaque
{ {
_fatal(); _fatal();
} }