aboutsummaryrefslogtreecommitdiffstats
path: root/generator
diff options
context:
space:
mode:
authorHugo Parente Lima <hugo.pl@gmail.com>2011-06-02 15:45:28 -0300
committerHugo Parente Lima <hugo.pl@gmail.com>2012-03-08 16:15:24 -0300
commitd8ffe3ff6633f968655f05c4f788bed9ac7316f7 (patch)
tree42af3dc227b755d4cbe7a380710f02117666cfbc /generator
parent1032878531733d2c54dde9cb012e8e4be2695a20 (diff)
Fix bug 862 - "Problems when printing objects"
Diffstat (limited to 'generator')
-rw-r--r--generator/cppgenerator.cpp21
1 files changed, 20 insertions, 1 deletions
diff --git a/generator/cppgenerator.cpp b/generator/cppgenerator.cpp
index f436f239f..e8ba611e5 100644
--- a/generator/cppgenerator.cpp
+++ b/generator/cppgenerator.cpp
@@ -4281,7 +4281,26 @@ QString CppGenerator::writeReprFunction(QTextStream& s, const AbstractMetaClass*
writeToCppConversion(s, metaClass, "pyObj");
s << ';' << endl;
s << INDENT << "buffer.close();" << endl;
- s << INDENT << "return PyString_FromFormat(\"<" << metaClass->package() << ".%s at %p>\", buffer.data().constData(), pyObj);" << endl;
+ s << INDENT << "QByteArray str = buffer.data();" << endl;
+ s << INDENT << "int idx = str.indexOf('(');" << endl;
+ s << INDENT << "if (idx >= 0)" << endl;
+ {
+ Indentation indent(INDENT);
+ s << INDENT << "str.replace(0, idx, Py_TYPE(pyObj)->tp_name);" << endl;
+ }
+
+ s << INDENT << "PyObject* mod = PyDict_GetItemString(Py_TYPE(pyObj)->tp_dict, \"__module__\");" << endl;
+ s << INDENT << "if (mod)" << endl;
+ {
+ Indentation indent(INDENT);
+ s << INDENT << "return PyString_FromFormat(\"<%s.%s at %p>\", PyString_AS_STRING(mod), str.constData(), pyObj);" << endl;
+ }
+ s << INDENT << "else" << endl;
+ {
+ Indentation indent(INDENT);
+ s << INDENT << "return PyString_FromFormat(\"<%s at %p>\", str.constData(), pyObj);" << endl;
+ }
+
s << '}' << endl;
s << "} // extern C" << endl << endl;;
return funcName;