From e163b3395d91f930146b27cb8e666498ce8c4102 Mon Sep 17 00:00:00 2001 From: Reinis Veips Date: Fri, 5 Jan 2024 10:00:26 +0200 Subject: --cpp-descriptors: add has_msgid() and msgid() methods --- generator/nanopb_generator.py | 6 ++++++ tests/cxx_descriptor/message.proto | 10 ++++++++++ tests/cxx_descriptor/message_descriptor.cc | 6 ++++++ 3 files changed, 22 insertions(+) diff --git a/generator/nanopb_generator.py b/generator/nanopb_generator.py index ff429bf..062d54a 100755 --- a/generator/nanopb_generator.py +++ b/generator/nanopb_generator.py @@ -1525,6 +1525,12 @@ class Message(ProtoElement): result += ' static inline const pb_msgdesc_t* fields() {\n' result += ' return &%s_msg;\n' % (self.name) result += ' }\n' + result += ' static inline bool has_msgid() {\n' + result += ' return %s;\n' % ("true" if hasattr(self, "msgid") else "false", ) + result += ' }\n' + result += ' static inline int32_t msgid() {\n' + result += ' return %d;\n' % (getattr(self, "msgid", 0), ) + result += ' }\n' result += '};' return result diff --git a/tests/cxx_descriptor/message.proto b/tests/cxx_descriptor/message.proto index be4334d..74f6b67 100644 --- a/tests/cxx_descriptor/message.proto +++ b/tests/cxx_descriptor/message.proto @@ -10,3 +10,13 @@ message MyEmptyMessage { message MyNonEmptyMessage { optional uint32 field = 1; } + +message MyMessageWithMsgid { + option (nanopb_msgopt).msgid = 42; + optional uint32 field = 1; +} + +message MyMessageWithoutMsgid { + optional uint32 field = 1; +} + diff --git a/tests/cxx_descriptor/message_descriptor.cc b/tests/cxx_descriptor/message_descriptor.cc index 4437301..04c63b3 100644 --- a/tests/cxx_descriptor/message_descriptor.cc +++ b/tests/cxx_descriptor/message_descriptor.cc @@ -23,6 +23,12 @@ extern "C" int main() { TEST(MessageDescriptor::fields() == MyNonEmptyMessage_fields); + TEST(MessageDescriptor::has_msgid() == true); + TEST(MessageDescriptor::msgid() == 42); + + TEST(MessageDescriptor::has_msgid() == false); + + if (status != 0) fprintf(stdout, "\n\nSome tests FAILED!\n"); return status; -- cgit v1.2.3