From 1917db613ea49edb7eee843b324f9cc9a542ff34 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jordan=20Bri=C3=A8re?= Date: Sun, 23 May 2021 20:21:37 -0400 Subject: [PATCH] Added ProtobufMessage.parse_to_abstract_pointer (#390/#399). --- src/core/modules/messages/messages.h | 5 +++++ src/core/modules/messages/messages_wrap.cpp | 10 ++++++++++ 2 files changed, 15 insertions(+) diff --git a/src/core/modules/messages/messages.h b/src/core/modules/messages/messages.h index 522174951..bdc66ab02 100644 --- a/src/core/modules/messages/messages.h +++ b/src/core/modules/messages/messages.h @@ -97,6 +97,11 @@ return spMessage; } + static void parse_to_abstract_pointer(google::protobuf::Message *pMessage, object oPtr) + { + ((google::protobuf::Message *)ExtractAddress(oPtr, true))->ParseFromString(pMessage->SerializeAsString()); + } + static const google::protobuf::FieldDescriptor* GetFieldDescriptor(google::protobuf::Message* pMessage, const char* field_name) { const google::protobuf::Descriptor* descriptor = pMessage->GetDescriptor(); diff --git a/src/core/modules/messages/messages_wrap.cpp b/src/core/modules/messages/messages_wrap.cpp index ebc4b18cc..d586dc09c 100644 --- a/src/core/modules/messages/messages_wrap.cpp +++ b/src/core/modules/messages/messages_wrap.cpp @@ -120,6 +120,16 @@ void export_protobuf_message(scope _messages) args("pointer") ).staticmethod("from_abstract_pointer"); + ProtobufMessage.def( + "parse_to_abstract_pointer", + &CProtobufMessageExt::parse_to_abstract_pointer, + "Parses this message into the given abstract pointer.\n" + "\n" + ".. note::\n" + " No checks is done on the given pointer and it is assumed to be valid. Do not use this " + " method if you don't know what you are doing." + ); + ProtobufMessage.def("get_int32", &CProtobufMessageExt::GetInt32); ProtobufMessage.def("get_int64", &CProtobufMessageExt::GetInt64); ProtobufMessage.def("get_uint32", &CProtobufMessageExt::GetUInt32);