/** @file RCollector_aux.hpp * * Out-of-line definitions for RCollector template methods * that depend on RGCObject (avoiding #include cycle in RCollector.hpp). * * Included via user_hpp_includes in GCObject.json5. * * @author Roland Conybeare **/ #pragma once #include namespace xo { namespace mm { /** defined here to avoid #include cycle, since * template obj awkward to make available * in RCollector.hpp **/ template template void RCollector::forward_inplace(xo::facet::obj * p_obj) { this->forward_inplace(p_obj->iface(), (void **)&(p_obj->data_)); } template template void RCollector::forward_inplace(DRepr ** p_repr) { // fetch static interface for DRepr auto iface = xo::facet::impl_for(); this->forward_inplace(&iface, (void **)p_repr); } template template requires (!std::is_same_v) void RCollector::forward_pivot_inplace(obj * p_objs) { auto e = xo::facet::FacetRegistry::instance().variant(*p_objs); this->forward_inplace(e.iface(), (void **)&(p_objs->data_)); } } } /* end RCollector_aux.hpp */