Add skip_message option to generator.
Update issue 121 Status: FixedInGit
This commit is contained in:
@@ -639,6 +639,10 @@ def parse_file(fdesc, file_options):
|
|||||||
|
|
||||||
for names, message in iterate_messages(fdesc, base_name):
|
for names, message in iterate_messages(fdesc, base_name):
|
||||||
message_options = get_nanopb_suboptions(message, file_options, names)
|
message_options = get_nanopb_suboptions(message, file_options, names)
|
||||||
|
|
||||||
|
if message_options.skip_message:
|
||||||
|
continue
|
||||||
|
|
||||||
messages.append(Message(names, message, message_options))
|
messages.append(Message(names, message, message_options))
|
||||||
for enum in message.enum_type:
|
for enum in message.enum_type:
|
||||||
enum_options = get_nanopb_suboptions(enum, message_options, names + enum.name)
|
enum_options = get_nanopb_suboptions(enum, message_options, names + enum.name)
|
||||||
|
|||||||
@@ -37,6 +37,9 @@ message NanoPBOptions {
|
|||||||
// Note: this cannot be used on CPUs that break on unaligned
|
// Note: this cannot be used on CPUs that break on unaligned
|
||||||
// accesses to variables.
|
// accesses to variables.
|
||||||
optional bool packed_struct = 5 [default = false];
|
optional bool packed_struct = 5 [default = false];
|
||||||
|
|
||||||
|
// Skip this message
|
||||||
|
optional bool skip_message = 6 [default = false];
|
||||||
}
|
}
|
||||||
|
|
||||||
// Extensions to protoc 'Descriptor' type in order to define options
|
// Extensions to protoc 'Descriptor' type in order to define options
|
||||||
|
|||||||
@@ -5,3 +5,6 @@ pb_callback_t int32_callback;
|
|||||||
\sEnumValue1 = 1
|
\sEnumValue1 = 1
|
||||||
Message5_EnumValue1
|
Message5_EnumValue1
|
||||||
} pb_packed my_packed_struct;
|
} pb_packed my_packed_struct;
|
||||||
|
! skipped_field
|
||||||
|
! SkippedMessage
|
||||||
|
|
||||||
|
|||||||
@@ -63,11 +63,15 @@ message my_packed_struct
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Message with ignored field
|
// Message with ignored field
|
||||||
// Note: doesn't really test if the field is missing in the output,
|
|
||||||
// but atleast tests that the output compiles.
|
|
||||||
message Message6
|
message Message6
|
||||||
{
|
{
|
||||||
required int32 field1 = 1;
|
required int32 field1 = 1;
|
||||||
optional int32 field2 = 2 [(nanopb).type = FT_IGNORE];
|
optional int32 skipped_field = 2 [(nanopb).type = FT_IGNORE];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Message that is skipped
|
||||||
|
message SkippedMessage
|
||||||
|
{
|
||||||
|
option (nanopb_msgopt).skip_message = true;
|
||||||
|
required int32 foo = 1;
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user