refactor: rename shallow_copy -> shallow_move + streamline
Use RCollector.std_copy_for where appropriate
This commit is contained in:
parent
5e46a1a1ad
commit
4e4687bc2a
7 changed files with 15 additions and 15 deletions
|
|
@ -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,
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
///@}
|
///@}
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
|
|
||||||
///@}
|
///@}
|
||||||
|
|
|
||||||
|
|
@ -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);
|
||||||
|
|
|
||||||
|
|
@ -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) {
|
||||||
|
|
|
||||||
|
|
@ -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);
|
||||||
|
|
|
||||||
|
|
@ -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();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue