[api] Trim the type erased entry point comments

This commit is contained in:
J. Nick Koston
2026-09-07 15:24:32 +02:00
parent 4b46129fff
commit 7ad38d3e4c
2 changed files with 3 additions and 8 deletions
+2 -5
View File
@@ -688,11 +688,8 @@ class DumpBuffer {
class ProtoMessage {
public:
// Non-virtual defaults for messages with no fields; generated message classes hide all four.
// encode_msg/calc_size_msg are the type-erased entry points (static over const void *), so
// &T::encode_msg is a MessageEncodeFn with no per-type thunk; encode()/calculate_size() serve
// direct callers and forward to the statics in generated classes. No virtual dispatch: every
// call site knows the concrete type, which keeps these out of the per-message vtables.
// Non-virtual defaults for messages with no fields; generated classes hide all four. The
// static encode_msg/calc_size_msg take const void * so &T::encode_msg needs no thunk.
static uint8_t *encode_msg(const void *self, ProtoWriteBuffer &buffer PROTO_ENCODE_DEBUG_PARAM) {
return buffer.get_pos();
}
+1 -3
View File
@@ -2841,9 +2841,7 @@ def build_message_type(
)
for line in encode
]
# The body is a static function taking the message as const void *, so its address is
# already a MessageEncodeFn and callers need no per-type thunk. The member encode() below
# forwards to it for direct callers.
# Static over const void * so &T::encode_msg is a MessageEncodeFn without a thunk.
o = f"{speed_attr}uint8_t *{desc.name}::encode_msg(const void *self, ProtoWriteBuffer &buffer PROTO_ENCODE_DEBUG_PARAM) {{\n"
o += f" const auto &msg = *static_cast<const {desc.name} *>(self);\n"
o += " uint8_t *__restrict__ pos = buffer.get_pos();\n"