diff --git a/protocol.h b/protocol.h index f4d0403..f693418 100644 --- a/protocol.h +++ b/protocol.h @@ -58,7 +58,8 @@ const void* get_mapped_vtable(const void* source_vtable_pointer, void* target)); template -const typename protocol_vtable_traits::const_vtable* get_vtable( +const typename protocol_vtable_traits::const_vtable* +get_const_vtable( const typename protocol_vtable_traits::const_vtable* source_vtable_pointer) { using FromVtable = @@ -68,8 +69,8 @@ const typename protocol_vtable_traits::const_vtable* get_vtable( static const char conversion_anchor = 0; auto mapping_function = [](const void* source, void* target) { - map_vtable_members(static_cast(source), - static_cast(target)); + map_const_vtable_members(static_cast(source), + static_cast(target)); }; return static_cast( @@ -78,7 +79,7 @@ const typename protocol_vtable_traits::const_vtable* get_vtable( } template -const typename protocol_vtable_traits::vtable* get_mutable_vtable( +const typename protocol_vtable_traits::vtable* get_vtable( const typename protocol_vtable_traits::vtable* source_vtable_pointer) { using FromVtable = typename protocol_vtable_traits::vtable; @@ -87,8 +88,8 @@ const typename protocol_vtable_traits::vtable* get_mutable_vtable( static const char conversion_anchor = 0; auto mapping_function = [](const void* source, void* target) { - map_mutable_vtable_members(static_cast(source), - static_cast(target)); + map_vtable_members(static_cast(source), + static_cast(target)); }; return static_cast( diff --git a/scripts/protocol.j2 b/scripts/protocol.j2 index d15ac5b..63a1a78 100644 --- a/scripts/protocol.j2 +++ b/scripts/protocol.j2 @@ -128,14 +128,14 @@ struct protocol_owning_vtable_traits<{{ full_class_name }}, Allocator> { }; template -inline void map_vtable_members(const From* from, const_view_vtable_{{ c.name }}* to) { +inline void map_const_vtable_members(const From* from, const_view_vtable_{{ c.name }}* to) { {% for m in c.methods %}{% if m.is_const %} to->{{ m.name | mangle }}_{{ method_guids[loop.index0] }} = from->{{ m.name | mangle }}_{{ method_guids[loop.index0] }}; {% endif %}{% endfor %} } template -inline void map_mutable_vtable_members(const From* from, view_vtable_{{ c.name }}* to) { +inline void map_vtable_members(const From* from, view_vtable_{{ c.name }}* to) { {% for m in c.methods %}{% if m.is_const %} to->const_view.{{ m.name | mangle }}_{{ method_guids[loop.index0] }} = from->const_view.{{ m.name | mangle }}_{{ method_guids[loop.index0] }}; {% endif %}{% endfor %} @@ -149,7 +149,7 @@ inline void map_owning_vtable_members(const From* from, typename protocol_owning to->xyz_protocol_clone = from->xyz_protocol_clone; to->xyz_protocol_move = from->xyz_protocol_move; to->xyz_protocol_destroy = from->xyz_protocol_destroy; - to->view_vt = get_mutable_vtable(from->view_vt); + to->view_vt = get_vtable(from->view_vt); {% for m in c.methods %} to->{{ m.name | mangle }}_{{ method_guids[loop.index0] }} = from->{{ m.name | mangle }}_{{ method_guids[loop.index0] }}; {% endfor %} @@ -581,13 +581,13 @@ class protocol_view { requires(!std::same_as) protocol_view(const protocol_view& other) noexcept : ptr_(other.ptr_), - vptr_(get_vtable(other.vptr_)) {} + vptr_(get_const_vtable(other.vptr_)) {} template requires(!std::same_as) protocol_view(const protocol_view& other) noexcept : ptr_(other.ptr_), - vptr_(get_vtable(&other.vptr_->const_view)) {} + vptr_(get_const_vtable(&other.vptr_->const_view)) {} template requires(!std::same_as) @@ -661,7 +661,7 @@ class protocol_view<{{ full_class_name }}> { requires(!std::same_as) protocol_view(const protocol_view& other) noexcept : ptr_(other.ptr_), - vptr_(get_mutable_vtable(other.vptr_)) {} + vptr_(get_vtable(other.vptr_)) {} template requires(!std::same_as)