Skip to content

Commit

Permalink
Added ProtobufMessage.parse_to_abstract_pointer (#390/#399).
Browse files Browse the repository at this point in the history
  • Loading branch information
jordanbriere committed May 24, 2021
1 parent c6cd5b5 commit 1917db6
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 0 deletions.
5 changes: 5 additions & 0 deletions src/core/modules/messages/messages.h
Expand Up @@ -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();
Expand Down
10 changes: 10 additions & 0 deletions src/core/modules/messages/messages_wrap.cpp
Expand Up @@ -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);
Expand Down

0 comments on commit 1917db6

Please sign in to comment.