diff generator/cppimplgenerator.cpp @ 104:64b874c86f9b

fixed bug with QSpinBox
author eldar
date Sat, 30 May 2009 13:07:26 +0000
parents 1750a803af74
children 3aa118a9ae71
line wrap: on
line diff
--- a/generator/cppimplgenerator.cpp	Fri May 29 14:59:43 2009 +0000
+++ b/generator/cppimplgenerator.cpp	Sat May 30 13:07:26 2009 +0000
@@ -780,8 +780,7 @@
 
             if (f_type) {
                 if (f_type->isTargetLangString())
-                    s << INDENT << "char* ret_str = NULL;" << endl
-                      << INDENT << "size_t ret_str_size = 0;" << endl;
+                      s << INDENT << "DArray ret_str;" << endl;
 
                 if (f_type->name() == "QModelIndex")
                     s << INDENT << "QModelIndexAccessor __d_return_value;" << endl;
@@ -843,7 +842,7 @@
 
                 if (f_type) {
                     if (f_type->isTargetLangString())
-                        s << ", ret_str, ret_str_size";
+                        s << ", &ret_str";
                     if (f_type->name() == "QModelIndex" || f_type->typeEntry()->isStructInD())
                         s << ", &__d_return_value";
                     if (f_type->isContainer())
@@ -875,7 +874,7 @@
                     }
 
                     if (f_type->isTargetLangString())
-                        s << INDENT << "return " << "QString::fromUtf8(ret_str, ret_str_size);" << endl;
+                        s << INDENT << "return " << "QString::fromUtf8((const char*) ret_str.ptr, ret_str.length);" << endl;
 
                     if ( ( f_type->isValue() && !f_type->typeEntry()->isStructInD() ) || f_type->isVariant() )
                         s << INDENT << "return " << f_type->name() << "(*__qt_return_value);" << endl; //" __qt_return_value = ";
@@ -894,9 +893,12 @@
     s << "(void *d_entity";
 
     if (ret_type) {
-        if (ret_type->isTargetLangString())
-            s << ", char* ret_str, size_t ret_str_size";
-
+        if (ret_type->isTargetLangString()) {
+            if (d_export)
+                s << ", string* ret_str";
+            else
+                s << ", DArray* ret_str";
+        }
         if (ret_type->name() == "QModelIndex")
             s << ", QModelIndexAccessor *__d_return_value";
         else if(ret_type->typeEntry()->isStructInD())
@@ -2113,6 +2115,8 @@
                                   extra_param);
                 s << endl;
 
+                writeRefArguments(s, java_function);
+
                 writeQtToJava(s, function_type, qt_return_value, java_return_value,
                               java_function, 0, EnumAsInts);
 
@@ -2129,8 +2133,8 @@
             } else {
                 writeFunctionCall(s, qt_object_name, java_function, function_prefix, option,
                                   extra_param);
+                writeRefArguments(s, java_function);
             }
-            writeRefArguments(s, java_function);
         }
     }
     if(!java_function->argumentReplaced(0).isEmpty()) {