Browse Source

Update Class and Enum naming rules

- All classes starts from Upper case letter
- All Enum values starts from upper case letter
Tatyana Borisova 5 years ago
parent
commit
2de4744055

+ 5 - 7
src/generator/classgeneratorbase.cpp

@@ -26,7 +26,6 @@
 #include "classgeneratorbase.h"
 
 #include "templates.h"
-#include "utils.h"
 #include "generatoroptions.h"
 
 #include <google/protobuf/descriptor.h>
@@ -44,7 +43,7 @@ ClassGeneratorBase::ClassGeneratorBase(const std::string &fullClassName, const s
 {
     utils::split(fullClassName, mNamespaces, '.');
     assert(mNamespaces.size() > 0);
-    mClassName = mNamespaces.back();
+    mClassName = utils::upperCaseName(mNamespaces.back());
     mNamespaces.erase(mNamespaces.end() - 1);
     for (size_t i = 0; i < mNamespaces.size(); i++) {
         if (i > 0) {
@@ -155,7 +154,7 @@ std::string ClassGeneratorBase::getTypeName(const FieldDescriptor *field, const
         typeName = namespaceTypeName.append(msg->name());
 
         if (field->is_map()) {
-            return mClassName + "::" + field->message_type()->name();
+            return mClassName + "::" + utils::upperCaseName(field->message_type()->name());
         }
         if (field->is_repeated()) {
             return namespaceTypeName.append(Templates::ListSuffix);
@@ -326,12 +325,11 @@ bool ClassGeneratorBase::producePropertyMap(const google::protobuf::Descriptor *
             typeNameNoList.resize(typeNameNoList.size() - strlen("List"));
         }
     }
-    std::string fieldName = field->name();
-    fieldName[0] = static_cast<char>(::tolower(fieldName[0]));
-    fieldName = qualifiedName(fieldName);
 
+    std::string fieldName = utils::lowerCaseName(field->name());
+    fieldName = qualifiedName(fieldName);
     propertyMap = {{"type", typeName},
-                   {"classname", message->name()},
+                   {"classname", utils::upperCaseName(message->name())},
                    {"type_lower", typeNameLower},
                    {"property_name", fieldName},
                    {"property_name_cap", capProperty},

+ 3 - 2
src/generator/classgeneratorbase.h

@@ -29,6 +29,7 @@
 #include <memory>
 #include <list>
 
+#include "utils.h"
 #include "templates.h"
 
 namespace google { namespace protobuf {
@@ -99,8 +100,8 @@ public:
             Indent();
             for (int j = 0; j < enumDescr->value_count(); j++) {
                 const auto valueDescr = enumDescr->value(j);
-                mPrinter->Print({{"enumvalue", valueDescr->name()},
-                                {"value", std::to_string(valueDescr->number())}}, Templates::EnumFieldTemplate);
+                mPrinter->Print({{"enumvalue", utils::upperCaseName(valueDescr->name())},
+                                 {"value", std::to_string(valueDescr->number())}}, Templates::EnumFieldTemplate);
             }
             Outdent();
             mPrinter->Print(Templates::SemicolonBlockEnclosureTemplate);

+ 1 - 1
src/generator/generatorbase.cpp

@@ -117,7 +117,7 @@ bool GeneratorBase::GenerateAll(const std::vector<const FileDescriptor *> &files
         outfHeaderPrinter->Indent();
         for (auto file : package.second) {
             iterateNonNestedFileds(file, [&outfHeaderPrinter](const ::google::protobuf::Descriptor *message) {
-                outfHeaderPrinter->Print({{"classname", message->name()}}, "qRegisterProtobufType<$classname$>();\n");
+                outfHeaderPrinter->Print({{"classname", utils::upperCaseName(message->name())}}, "qRegisterProtobufType<$classname$>();\n");
             });
 
             if (file->enum_type_count() > 0) {

+ 6 - 7
src/generator/protobufclassgenerator.cpp

@@ -106,8 +106,7 @@ void ProtobufClassGenerator::printConstructor()
     for (int i = 0; i < mMessage->field_count(); i++) {
         const FieldDescriptor *field = mMessage->field(i);
         std::string fieldTypeName = getTypeName(field, mMessage);
-        std::string fieldName = field->name();
-        fieldName[0] = static_cast<char>(::tolower(fieldName[0]));
+        std::string fieldName = utils::lowerCaseName(field->name());
         fieldName = qualifiedName(fieldName);
 
         if (field->is_repeated() || field->is_map()) {
@@ -169,9 +168,9 @@ void ProtobufClassGenerator::printMaps()
                 mapTemplate = Templates::MessageMapTypeUsingTemplate;
             }
 
-            mPrinter->Print({{"classname",field->message_type()->name()},
-                            {"key", keyType},
-                            {"value", valueType}}, mapTemplate);
+            mPrinter->Print({{"classname", utils::upperCaseName(field->message_type()->name())},
+                             {"key", keyType},
+                             {"value", valueType}}, mapTemplate);
         }
     }
     Outdent();
@@ -186,7 +185,7 @@ void ProtobufClassGenerator::printLocalEnumsMetaTypesDeclaration()
 
         if (field->type() == FieldDescriptor::TYPE_ENUM
                 && isLocalMessageEnum(mMessage, field)) {
-             mPrinter->Print({{"classname", mClassName + "::" + field->enum_type()->name() + Templates::ListSuffix},
+            mPrinter->Print({{"classname", mClassName + "::" + field->enum_type()->name() + Templates::ListSuffix},
                              {"namespaces", mNamespacesColonDelimited}}, Templates::DeclareMetaTypeTemplate);
         }
     }
@@ -360,7 +359,7 @@ void ProtobufClassGenerator::printFieldClassDeclaration()
         auto field = mMessage->field(i);
         if (field->type() == FieldDescriptor::TYPE_MESSAGE
                 && !field->is_map() && !field->is_repeated()) {
-            mPrinter->Print({{"classname", field->message_type()->name()}}, Templates::ProtoClassDeclarationTemplate);
+            mPrinter->Print({{"classname", utils::upperCaseName(field->message_type()->name())}}, Templates::ProtoClassDeclarationTemplate);
         }
     }
 }

+ 4 - 8
src/generator/protobufsourcegenerator.cpp

@@ -124,8 +124,7 @@ void ProtobufSourceGenerator::printConstructor()
     for (int i = 0; i < mMessage->field_count(); i++) {
         const FieldDescriptor *field = mMessage->field(i);
         std::string fieldTypeName = getTypeName(field, mMessage);
-        std::string fieldName = field->name();
-        fieldName[0] = static_cast<char>(::tolower(fieldName[0]));
+        std::string fieldName = utils::lowerCaseName(field->name());
         fieldName = qualifiedName(fieldName);
 
         if (field->is_repeated() || field->is_map()) {
@@ -170,9 +169,8 @@ void ProtobufSourceGenerator::printConstructor()
                          {"parameter_list", parameters}}, Templates::ProtoConstructorDefinitionTemplate);
         for (size_t j = 0; j < parameterList.size(); j++) {
             const FieldDescriptor *field = mMessage->field(j);
-            std::string fieldName = field->name();
+            std::string fieldName = utils::lowerCaseName(field->name());
             auto fieldTypeName = getTypeName(field, mMessage);
-            fieldName[0] = static_cast<char>(::tolower(fieldName[0]));
             fieldName = qualifiedName(fieldName);
             if (field->type() == FieldDescriptor::TYPE_MESSAGE
                     && !field->is_map() && !field->is_repeated()) {
@@ -229,9 +227,8 @@ void ProtobufSourceGenerator::printCopyFunctionality()
                     Templates::CopyConstructorDefinitionTemplate);
     for (int j = 0; j < mMessage->field_count(); j++) {
         const FieldDescriptor *field = mMessage->field(j);
-        std::string fieldName = field->name();
+        std::string fieldName = utils::lowerCaseName(field->name());
         auto fieldTypeName = getTypeName(field, mMessage);
-        fieldName[0] = static_cast<char>(::tolower(fieldName[0]));
         fieldName = qualifiedName(fieldName);
 
         if (field->type() == FieldDescriptor::TYPE_MESSAGE
@@ -276,9 +273,8 @@ void ProtobufSourceGenerator::printMoveSemantic()
                     Templates::MoveConstructorDefinitionTemplate);
     for (int j = 0; j < mMessage->field_count(); j++) {
         const FieldDescriptor *field = mMessage->field(j);
-        std::string fieldName = field->name();
+        std::string fieldName = utils::lowerCaseName(field->name());
         auto fieldTypeName = getTypeName(field, mMessage);
-        fieldName[0] = static_cast<char>(::tolower(fieldName[0]));
         fieldName = qualifiedName(fieldName);
 
         if (field->type() == FieldDescriptor::TYPE_MESSAGE

+ 15 - 0
src/generator/utils.h

@@ -77,6 +77,21 @@ static std::string extractFileName(std::string fileName) {
     return fileName;
 }
 
+
+static std::string upperCaseName(const std::string &name)
+{
+    std::string upperCaseName(name);
+    upperCaseName[0] = static_cast<char>(::toupper(upperCaseName[0]));
+    return upperCaseName;
+}
+
+static std::string lowerCaseName(const std::string &name)
+{
+    std::string lowerCaseName(name);
+    lowerCaseName[0] = static_cast<char>(::tolower(lowerCaseName[0]));
+    return lowerCaseName;
+}
+
 };
 
 #define UNUSED(expr) do { (void)(expr); } while (0)

+ 3 - 6
tests/test_qml/qml/tst_simple.qml

@@ -72,11 +72,9 @@ TestCase {
         id: underScoreMsg
     }
 
-    //TODO: uncomment when functionality is implemented
-    //TODO: #192
-//    LowerCaseMessageName {
-//        id: lowerCaseMsg
-//    }
+    LowerCaseMessageName {
+        id: lowerCaseMsg
+    }
 
     function test_simpleboolmessage() {
         boolMsg.testFieldBool = true;
@@ -234,7 +232,6 @@ TestCase {
     }
 
     function test_lowerCaseMessage() {
-        //TODO: #192
         lowerCaseMsg.testField = 34
         compare(lowerCaseMsg.testField == 34, true, "LowerCaseMessageName == 34")
     }