refactor: make AGCObject.shallow_copy() non-const
prep for moving to ACollector interface
This commit is contained in:
parent
ea734fb3f4
commit
b88d181906
6 changed files with 19 additions and 13 deletions
|
|
@ -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"],
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
///@}
|
///@}
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
|
|
||||||
///@}
|
///@}
|
||||||
|
|
|
||||||
|
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
{
|
{
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue