Fix naming of nested Enums with short names

This commit is contained in:
Petteri Aimonen
2012-11-14 00:43:51 +02:00
parent 02ecee2de8
commit 0abb764b18
3 changed files with 16 additions and 3 deletions

View File

@@ -92,9 +92,9 @@ class Enum:
if enum_options.long_names:
self.values = [(self.names + x.name, x.number) for x in desc.value]
else:
self.values = [(x.name, x.number) for x in desc.value]
self.values = [(names + x.name, x.number) for x in desc.value]
self.value_longnames = [names + desc.name + x.name for x in desc.value]
self.value_longnames = [self.names + x.name for x in desc.value]
def __str__(self):
result = 'typedef enum _%s {\n' % self.names
@@ -395,7 +395,8 @@ def parse_file(fdesc, file_options):
message_options = get_nanopb_suboptions(message, file_options)
messages.append(Message(names, message, message_options))
for enum in message.enum_type:
enums.append(Enum(names, enum, message_options))
enum_options = get_nanopb_suboptions(enum, message_options)
enums.append(Enum(names, enum, enum_options))
# Fix field default values where enum short names are used.
for enum in enums:

View File

@@ -3,3 +3,4 @@ char msgsize\[30\];
char fieldsize\[40\];
pb_callback_t int32_callback;
\sEnumValue1 = 1
Message5_EnumValue1

View File

@@ -43,3 +43,14 @@ message EnumTest
{
required Enum1 field = 1 [default = EnumValue2];
}
// Short enum names inside message
message Message5
{
enum Enum2
{
option (nanopb_enumopt).long_names = false;
EnumValue1 = 1;
}
required Enum2 field = 1 [default = EnumValue1];
}