refactor: use GCObjectVisitor api w/ gco_shallow_move
This commit is contained in:
parent
db4ccfd911
commit
3489699f5d
8 changed files with 51 additions and 15 deletions
|
|
@ -88,9 +88,25 @@
|
|||
},
|
||||
],
|
||||
router_facet_explicit_content: [
|
||||
"/** convenience: allocate copy for typed pointer **/",
|
||||
"template <typename T>",
|
||||
"void * alloc_copy_for(const T * src) noexcept {",
|
||||
" return O::iface()->alloc_copy(O::data(), (std::byte *)const_cast<T *>(src));",
|
||||
"}",
|
||||
"",
|
||||
"/** visit forward faceted object child pointer in place.",
|
||||
" Defined in RGCObject.hpp to avoid #include cycle",
|
||||
"/** convenience: move typed pointer **/",
|
||||
"template <typename T>",
|
||||
"T * std_move_for(T * src) noexcept {",
|
||||
" void * mem = this->alloc_copy_for(src);",
|
||||
" if (mem) {",
|
||||
" return new (mem) T(std::move(*src));",
|
||||
" }",
|
||||
" return nullptr;",
|
||||
"}",
|
||||
"",
|
||||
"/** visit a gcobject child pointer in place.",
|
||||
" Defined in RCollector_aux.hpp to avoid #include cycle",
|
||||
" (for historical reasons - coul d be in RGCObject_aux.hpp?)",
|
||||
" **/",
|
||||
"template <typename DRepr>",
|
||||
"void visit_child(xo::facet::obj<AGCObject,DRepr> * p_obj);",
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue