[Kde-bindings] KDE/kdebindings/generator/generators/smoke

Arno Rehn kde at arnorehn.de
Tue May 25 12:58:35 UTC 2010


SVN commit 1130463 by arnorehn:

Store 'long long' types in Smoke::StackItem::s_voidp. This will restore correct 'long long'
handling in QtRuby and break the already broken 'long' handling in C# even more.
This should however be fixed with the new C# bindings generated by assemblygen.

CCMAIL: kde-bindings at kde.org

 M  +2 -2      generator_smoke.cpp  
 M  +2 -2      helpers.cpp  


--- trunk/KDE/kdebindings/generator/generators/smoke/generator_smoke.cpp #1130462:1130463
@@ -212,9 +212,9 @@
     
     Options::qtMode = ParserOptions::qtMode;
     
+    Options::voidpTypes << "long long" << "long long int" << "unsigned long long" << "unsigned long long int";
+    
     // Fill the type map. It maps some long integral types to shorter forms as used in SMOKE.
-    Util::typeMap["long long"] = "long";
-    Util::typeMap["long long int"] = "long";
     Util::typeMap["long int"] = "long";
     Util::typeMap["short int"] = "short";
     Util::typeMap["long double"] = "double";
--- trunk/KDE/kdebindings/generator/generators/smoke/helpers.cpp #1130462:1130463
@@ -503,7 +503,7 @@
         return "s_uint";
     }
 
-    if (type->pointerDepth() > 0 || type->isRef() || type->isFunctionPointer() || type->isArray()
+    if (type->pointerDepth() > 0 || type->isRef() || type->isFunctionPointer() || type->isArray() || Options::voidpTypes.contains(type->name())
         || (!type->isIntegral() && !type->getEnum()))
     {
         return "s_class";
@@ -538,7 +538,7 @@
         return "(void*)" + var;
     } else if (type->isRef()) {
         return "(void*)&" + var;
-    } else if (type->isIntegral()) {
+    } else if (type->isIntegral() && !Options::voidpTypes.contains(type->name())) {
         return var;
     } else if (type->getEnum()) {
         return var;



More information about the Kde-bindings mailing list