/** @file RGCObject.hpp * * @author Roland Conybeare, Dec 2025 **/ #pragma once #include "AGCObject.hpp" #include namespace xo { namespace mm { /** @class RGCObject **/ template struct RGCObject : public Object { private: using O = Object; public: using ObjectType = Object; using DataPtr = Object::DataPtr; using size_type = std::size_t; RGCObject() = default; RGCObject(Object::DataPtr data) : Object{std::move(data)} {} int32_t _typeseq() const noexcept { return O::iface()->_typeseq(); } size_type shallow_size() const noexcept { O::iface()->shallow_size(O::data()); } Opaque * shallow_copy(obj mm) const noexcept { O::iface()->shallow_copy(O::data(), mm); } size_type forward_children() noexcept { O::iface()->forward_children(O::data()); } static bool _valid; }; template bool RGCObject::_valid = facet::valid_object_router(); } /*namespace mm*/ namespace facet { template struct RoutingFor { using RoutingType = xo::mm::RGCObject; }; } } /*namespace xo*/ /* end RGCObject.hpp */