[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    KDE/kdelibs/kdecore/kconfig_compiler
From:       Luboš Luňák <l.lunak () kde ! org>
Date:       2010-08-22 9:08:39
Message-ID: 20100822090839.CB03AAC857 () svn ! kde ! org
[Download RAW message or body]

SVN commit 1166626 by lunakl:

Fix incorrectly generated code with UseEnumTypes=true, GlobalEnums=true.



 M  +18 -16    kconfig_compiler.cpp  


--- trunk/KDE/kdelibs/kdecore/kconfig_compiler/kconfig_compiler.cpp #1166625:1166626
@@ -327,12 +327,14 @@
   return result;
 }
 
-static QString enumType(const CfgEntry *e)
+static QString enumType(const CfgEntry *e, bool globalEnums)
 {
   QString result = e->choices().name();
   if ( result.isEmpty() )
   {
-    result = "Enum" + e->name() + "::type";
+    result = "Enum" + e->name();
+    if( !globalEnums )
+        result += "::type";
     result[4] = result[4].toUpper();
   }
   return result;
@@ -1061,7 +1063,7 @@
 // returns the member accesor implementation
 // which should go in the h file if inline
 // or the cpp file if not inline
-QString memberAccessorBody( CfgEntry *e )
+QString memberAccessorBody( CfgEntry *e, bool globalEnums )
 {
     QString result;
     QTextStream out(&result, QIODevice::WriteOnly);
@@ -1071,7 +1073,7 @@
 
     out << "return ";
     if (useEnumType)
-      out << "static_cast<" << enumType(e) << ">(";
+      out << "static_cast<" << enumType(e, globalEnums) << ">(";
     out << This << varPath(n);
     if (!e->param().isEmpty())
       out << "[i]";
@@ -1491,7 +1493,7 @@
       }
       if ( choices.name().isEmpty() ) {
         if ( globalEnums ) {
-          h << "    enum { " << values.join( ", " ) << " };" << endl;
+          h << "    enum " << enumName( (*itEntry)->name(), (*itEntry)->choices() ) \
<< " { " << values.join( ", " ) << " };" << endl;  } else {
           // Create an automatically named enum
           h << "    class " << enumName( (*itEntry)->name(), (*itEntry)->choices() ) \
<< endl; @@ -1511,7 +1513,7 @@
         // ### FIXME!!
         // make the following string table an index-based string search!
         // ###
-        h << "    enum { " << values.join( ", " ) << " };" << endl;
+        h << "    enum " << enumName( (*itEntry)->param() ) << " { " << values.join( \
                ", " ) << " };" << endl;
         h << "    static const char* const " << enumName( (*itEntry)->param() ) << \
                "ToString[];" << endl;
         cppPreamble += "const char* const " + className + "::" + enumName( \
(*itEntry)->param() ) +  "ToString[] = { \"" + values.join( "\", \"" ) + "\" };\n";
@@ -1598,7 +1600,7 @@
       if (!(*itEntry)->param().isEmpty())
         h << cppType((*itEntry)->paramType()) << " i, ";
       if (useEnumTypes && t == "Enum")
-        h << enumType(*itEntry);
+        h << enumType(*itEntry, globalEnums);
       else
         h << param( t );
       h << " v )";
@@ -1624,7 +1626,7 @@
       h << "    static" << endl;
     h << "    ";
     if (useEnumTypes && t == "Enum")
-      h << enumType(*itEntry);
+      h << enumType(*itEntry, globalEnums);
     else
       h << cppType(t);
     h << " " << getFunction(n) << "(";
@@ -1636,7 +1638,7 @@
     if ( !dpointer )
     {
        h << endl << "    {" << endl;
-      h << indent(memberAccessorBody((*itEntry)), 6 );
+      h << indent(memberAccessorBody(*itEntry, globalEnums), 6 );
        h << "    }" << endl;
     }
     else
@@ -1654,7 +1656,7 @@
         h << "    static" << endl;
       h << "    ";
       if (useEnumTypes && t == "Enum")
-        h << enumType(*itEntry);
+        h << enumType(*itEntry, globalEnums);
       else
         h << cppType(t);
       h << " " << getDefaultFunction(n) << "(";
@@ -1664,7 +1666,7 @@
       h << "    {" << endl;
       h << "        return ";
       if (useEnumTypes && t == "Enum")
-        h << "static_cast<" << enumType(*itEntry) << ">(";
+        h << "static_cast<" << enumType(*itEntry, globalEnums) << ">(";
       h << getDefaultFunction(n) << "_helper(";
       if ( !(*itEntry)->param().isEmpty() )
           h << " i ";
@@ -1723,7 +1725,7 @@
         if ( useEnumTypes && argument.type == "Enum" ) {
           for ( int i = 0, end = entries.count(); i < end; ++i ) {
             if ( entries[i]->name() == argument.variableName ) {
-              type = enumType(entries[i]);
+              type = enumType(entries[i], globalEnums);
               break;
             }
           }
@@ -2130,7 +2132,7 @@
         if ( !(*itEntry)->param().isEmpty() )
           cpp << cppType( (*itEntry)->paramType() ) << " i, ";
         if (useEnumTypes && t == "Enum")
-          cpp << enumType(*itEntry);
+          cpp << enumType(*itEntry, globalEnums);
         else
           cpp << param( t );
         cpp << " v )" << endl;
@@ -2143,7 +2145,7 @@
 
       // Accessor
       if (useEnumTypes && t == "Enum")
-        cpp << enumType(*itEntry);
+        cpp << enumType(*itEntry, globalEnums);
       else
         cpp << cppType(t);
       cpp << " " << getFunction(n, className) << "(";
@@ -2153,7 +2155,7 @@
       // function body inline only if not using dpointer
       // for BC mode
       cpp << "{" << endl;
-      cpp << indent(memberAccessorBody( *itEntry ), 2);
+      cpp << indent(memberAccessorBody( *itEntry, globalEnums ), 2);
       cpp << "}" << endl << endl;
 
       // Default value Accessor -- written by the loop below
@@ -2220,7 +2222,7 @@
         if ( useEnumTypes && argument.type == "Enum" ) {
           for ( int i = 0, end = entries.count(); i < end; ++i ) {
             if ( entries[i]->name() == argument.variableName ) {
-              cpp << "static_cast<" << enumType(entries[i]) << ">(";
+              cpp << "static_cast<" << enumType(entries[i], globalEnums) << ">(";
               cast = true;
               break;
             }


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic