Просмотр исходного кода

Merge pull request #17 from DenDasus/oneof_enum_patch

Fixed "clear" method generation when enum is a part of oneof
BartH 5 лет назад
Родитель
Сommit
c68c2510d5
2 измененных файлов с 4 добавлено и 0 удалено
  1. 2 0
      generator/support/Field.py
  2. 2 0
      generator/templates/TypeOneof.h

+ 2 - 0
generator/support/Field.py

@@ -49,6 +49,8 @@ class Field:
         self.variable_id_name = self.name.upper()
         self.variable_id = self.descriptor.number
         self.template_file = template_filename
+        
+        self.of_type_enum = FieldDescriptorProto.TYPE_ENUM == proto_descriptor.type
 
 
     @staticmethod

+ 2 - 0
generator/templates/TypeOneof.h

@@ -91,6 +91,8 @@ void clear_{{_oneof.get_name()}}()
     case id::{{field.get_variable_id_name()}}:
       {% if field.oneof_allocation_required() %}
       {{field.get_variable_name()}}.~{{field.get_short_type()}}();
+	  {% elif field.of_type_enum %}
+	  {{field.get_variable_name()}} = {{field.get_default_value()}};
       {% else %}
       {{field.get_variable_name()}}.set(0);
       {% endif %}