Browse Source

Add check if global enum exists.

Tatyana Borisova 5 years ago
parent
commit
88a5200ee2

+ 10 - 0
src/generator/classgeneratorbase.cpp

@@ -259,3 +259,13 @@ void ClassGeneratorBase::getMethodParameters(const MethodDescriptor *method, std
                   {"return_name", "ret"}
                  };
 }
+
+bool ClassGeneratorBase::hasGlobalEnum(const std::list<const FileDescriptor *> &list)
+{
+    for (auto file : list) {
+        if (file->enum_type_count() <= 0) {
+            return false;
+        }
+    }
+    return true;
+}

+ 1 - 0
src/generator/classgeneratorbase.h

@@ -72,6 +72,7 @@ protected:
     void printMetaTypeDeclaration();
     void encloseNamespaces();
     void encloseNamespaces(int count);
+    bool hasGlobalEnum(const std::list<const ::google::protobuf::FileDescriptor *> &list);
 
     template<typename T>
     void printQEnums(const T *message) {

+ 3 - 0
src/generator/globalenumsgenerator.cpp

@@ -57,6 +57,9 @@ void GlobalEnumsGenerator::run() {
     printPreamble();
     std::vector<std::string> namespaces;
     for (auto package : mPackageList) {
+        if (!hasGlobalEnum(package.second)) {
+            continue;
+        }
         utils::split(package.first, namespaces, '.');
         startEnum(namespaces);
         for (auto file : package.second) {

+ 3 - 0
src/generator/globalenumssourcegenerator.cpp

@@ -44,6 +44,9 @@ void GlobalEnumsSourceGenerator::run() {
 
     std::vector<std::string> namespaces;
     for (auto package : mPackageList) {
+        if (!hasGlobalEnum(package.second)) {
+            continue;
+        }
         utils::split(package.first, namespaces, '.');
 
         printNamespaces(namespaces);