Browse Source

Add default values for class members for simple types

Alexey Edelev 6 years ago
parent
commit
f685f635ce
1 changed files with 18 additions and 1 deletions
  1. 18 1
      src/generator/protobufclassgenerator.cpp

+ 18 - 1
src/generator/protobufclassgenerator.cpp

@@ -371,10 +371,27 @@ void ProtobufClassGenerator::printConstructor()
         std::string fieldName = field->name();
         fieldName[0] = ::tolower(fieldName[0]);
         switch (field->type()) {
+        case FieldDescriptor::TYPE_DOUBLE:
+        case FieldDescriptor::TYPE_FLOAT:
+            parameterList += fieldTypeName + " " + fieldName + " = " + "{0.0}";
+            break;
+        case FieldDescriptor::TYPE_FIXED32:
+        case FieldDescriptor::TYPE_FIXED64:
+        case FieldDescriptor::TYPE_INT32:
+        case FieldDescriptor::TYPE_INT64:
+        case FieldDescriptor::TYPE_SINT32:
+        case FieldDescriptor::TYPE_SINT64:
+        case FieldDescriptor::TYPE_UINT32:
+        case FieldDescriptor::TYPE_UINT64:
+            parameterList += fieldTypeName + " " + fieldName + " = " + "{0}";
+            break;
+        case FieldDescriptor::TYPE_BOOL:
+            parameterList += fieldTypeName + " " + fieldName + " = " + "{false}";
+            break;
         case FieldDescriptor::TYPE_BYTES:
         case FieldDescriptor::TYPE_STRING:
         case FieldDescriptor::TYPE_MESSAGE:
-            parameterList += "const " + fieldTypeName + " &" + fieldName + " = " + fieldTypeName + "()";
+            parameterList += "const " + fieldTypeName + " &" + fieldName + " = {}";
             break;
         default:
             parameterList += fieldTypeName + " " + fieldName + " = " + "{}";