refactor: make AGCObject.shallow_copy() non-const

prep for moving to ACollector interface
This commit is contained in:
Roland Conybeare 2026-04-04 14:38:14 -04:00
commit b88d181906
6 changed files with 19 additions and 13 deletions

View file

@ -54,7 +54,9 @@
noexcept: true, noexcept: true,
attributes: [], attributes: [],
}, },
// Opaque shallow_copy(obj<AAllocator>>) const noexcept ],
nonconst_methods: [
// Opaque shallow_copy(obj<AAllocator>>) noexcept
{ {
name: "shallow_copy", name: "shallow_copy",
doc: ["copy instance using allocator"], doc: ["copy instance using allocator"],
@ -66,9 +68,7 @@
noexcept: true, noexcept: true,
attributes: [], attributes: [],
}, },
], // size_type forward_children(obj<ACollector>) noexcept
nonconst_methods: [
// size_type forward_children(obj<ACollector>) const noexcept
{ {
name: "forward_children", name: "forward_children",
doc: ["during GC: forward immdiate children"], doc: ["during GC: forward immdiate children"],

View file

@ -64,10 +64,10 @@ public:
virtual void _drop(Opaque d) const noexcept = 0; virtual void _drop(Opaque d) const noexcept = 0;
/** memory consumption for this instance **/ /** memory consumption for this instance **/
virtual size_type shallow_size(Copaque data) const noexcept = 0; virtual size_type shallow_size(Copaque data) const noexcept = 0;
/** copy instance using allocator **/
virtual Opaque shallow_copy(Copaque data, obj<AAllocator> mm) const noexcept = 0;
// nonconst methods // nonconst methods
/** copy instance using allocator **/
virtual Opaque shallow_copy(Opaque data, obj<AAllocator> mm) 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

@ -62,9 +62,9 @@ namespace mm {
// const methods // const methods
[[noreturn]] size_type shallow_size(Copaque) const noexcept override { _fatal(); } [[noreturn]] size_type shallow_size(Copaque) const noexcept override { _fatal(); }
[[noreturn]] Opaque shallow_copy(Copaque, obj<AAllocator>) const noexcept override { _fatal(); }
// nonconst methods // nonconst methods
[[noreturn]] Opaque shallow_copy(Opaque, obj<AAllocator>) 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

@ -52,11 +52,11 @@ namespace mm {
size_type shallow_size(Copaque data) const noexcept override { size_type shallow_size(Copaque data) const noexcept override {
return I::shallow_size(_dcast(data)); return I::shallow_size(_dcast(data));
} }
Opaque shallow_copy(Copaque data, obj<AAllocator> mm) const noexcept override {
return I::shallow_copy(_dcast(data), mm);
}
// non-const methods // non-const methods
Opaque shallow_copy(Opaque data, obj<AAllocator> mm) const noexcept override {
return I::shallow_copy(_dcast(data), mm);
}
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

@ -58,11 +58,11 @@ public:
size_type shallow_size() const noexcept { size_type shallow_size() const noexcept {
return O::iface()->shallow_size(O::data()); return O::iface()->shallow_size(O::data());
} }
Opaque shallow_copy(obj<AAllocator> mm) const noexcept {
return O::iface()->shallow_copy(O::data(), mm);
}
// non-const methods (still const in router!) // non-const methods (still const in router!)
Opaque shallow_copy(obj<AAllocator> mm) noexcept {
return O::iface()->shallow_copy(O::data(), mm);
}
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

@ -35,6 +35,12 @@ IGCObject_Any::_valid
// nonconst methods // nonconst methods
auto
IGCObject_Any::shallow_copy(Opaque, obj<AAllocator>) const noexcept -> Opaque
{
_fatal();
}
auto auto
IGCObject_Any::forward_children(Opaque, obj<ACollector>) const noexcept -> size_type IGCObject_Any::forward_children(Opaque, obj<ACollector>) const noexcept -> size_type
{ {