diff options
author | Hugo Parente Lima <hugo.pl@gmail.com> | 2011-06-03 19:47:01 -0300 |
---|---|---|
committer | Hugo Parente Lima <hugo.pl@gmail.com> | 2012-03-08 16:15:25 -0300 |
commit | f526cb6f0c87d6730334808b59604bc0878c8c2c (patch) | |
tree | 4a3edf441790304aef3a5ae3241c8e440dfcddab /generator | |
parent | 0bc3c52678a2b86850c9342d60c975a9cc958cac (diff) |
Fix bug 501 - "Shiboken generator doesn't use full qualified name (with :: prefix) on all places."
Reviewer: Luciano Wolf <luciano.wolf@openbossa.org>
Marcelo Lira <marcelo.lira@openbossa.org>
Diffstat (limited to 'generator')
-rw-r--r-- | generator/cppgenerator.cpp | 96 | ||||
-rw-r--r-- | generator/shibokengenerator.cpp | 6 |
2 files changed, 50 insertions, 52 deletions
diff --git a/generator/cppgenerator.cpp b/generator/cppgenerator.cpp index e8ba611e5..efcba7c48 100644 --- a/generator/cppgenerator.cpp +++ b/generator/cppgenerator.cpp @@ -189,20 +189,20 @@ void CppGenerator::writeRegisterType(QTextStream& s, const AbstractMetaClass* me bool isObjectType = metaClass->typeEntry()->isObject(); if (!isObjectType) { - s << INDENT << "Shiboken::TypeResolver::createValueTypeResolver<" << typeName << " >" << "(\"" << typeName << "\");\n"; + s << INDENT << "Shiboken::TypeResolver::createValueTypeResolver< ::" << typeName << " >" << "(\"" << typeName << "\");\n"; if (!reducedName.isEmpty()) - s << INDENT << "Shiboken::TypeResolver::createValueTypeResolver<" << typeName << " >" << "(\"" << reducedName << "\");\n"; + s << INDENT << "Shiboken::TypeResolver::createValueTypeResolver< ::" << typeName << " >" << "(\"" << reducedName << "\");\n"; } - s << INDENT << "Shiboken::TypeResolver::createObjectTypeResolver<" << typeName << " >" << "(\"" << typeName << "*\");\n"; + s << INDENT << "Shiboken::TypeResolver::createObjectTypeResolver< ::" << typeName << " >" << "(\"" << typeName << "*\");\n"; if (!reducedName.isEmpty()) - s << INDENT << "Shiboken::TypeResolver::createObjectTypeResolver<" << typeName << " >" << "(\"" << reducedName << "*\");\n"; + s << INDENT << "Shiboken::TypeResolver::createObjectTypeResolver< ::" << typeName << " >" << "(\"" << reducedName << "*\");\n"; QString functionSufix = (isObjectType ? "Object" : "Value"); s << INDENT << "Shiboken::TypeResolver::create" << functionSufix; - s << "TypeResolver<" << typeName << " >" << "(typeid(" << typeName << ").name());\n"; + s << "TypeResolver< ::" << typeName << " >" << "(typeid(::" << typeName << ").name());\n"; if (shouldGenerateCppWrapper(metaClass)) { s << INDENT << "Shiboken::TypeResolver::create" << functionSufix; - s << "TypeResolver<" << typeName << " >" << "(typeid(" << wrapperName(metaClass) << ").name());\n"; + s << "TypeResolver< ::" << typeName << " >" << "(typeid(::" << wrapperName(metaClass) << ").name());\n"; } } @@ -227,8 +227,8 @@ void CppGenerator::writeToPythonFunction(QTextStream& s, const AbstractMetaClass { s << "static PyObject* " << cpythonBaseName(metaClass) << "_ToPythonFunc(PyObject* self)" << endl; s << "{" << endl; - s << INDENT << metaClass->qualifiedCppName() << "* cppSelf = Shiboken::Converter<" << metaClass->qualifiedCppName() << "* >::toCpp(self);" << endl; - s << INDENT << "PyObject* pyResult = Shiboken::PythonConverter<" << metaClass->qualifiedCppName() << " >::transformToPython(cppSelf);" << endl; + s << INDENT << metaClass->qualifiedCppName() << "* cppSelf = Shiboken::Converter< ::" << metaClass->qualifiedCppName() << "* >::toCpp(self);" << endl; + s << INDENT << "PyObject* pyResult = Shiboken::PythonConverter< ::" << metaClass->qualifiedCppName() << " >::transformToPython(cppSelf);" << endl; s << INDENT << "if (PyErr_Occurred() || !pyResult) {" << endl; { Indentation indentation(INDENT); @@ -844,7 +844,7 @@ void CppGenerator::writeVirtualMethodNative(QTextStream &s, const AbstractMetaFu if (func->type()->isPrimitive()) desiredType = "\"" + func->type()->name() + "\""; else - desiredType = "Shiboken::SbkType<" + typeName + " >()->tp_name"; + desiredType = "Shiboken::SbkType< " + typeName + " >()->tp_name"; } } else { s << guessCPythonIsConvertible(func->typeReplaced(0)); @@ -967,12 +967,12 @@ void CppGenerator::writeConstructorWrapper(QTextStream& s, const AbstractMetaFun // Check if the right constructor was called. if (!metaClass->hasPrivateDestructor()) { - s << INDENT << "if (Shiboken::Object::isUserType(self) && !Shiboken::ObjectType::canCallConstructor(self->ob_type, Shiboken::SbkType<" << metaClass->qualifiedCppName() << " >()))" << endl; + s << INDENT << "if (Shiboken::Object::isUserType(self) && !Shiboken::ObjectType::canCallConstructor(self->ob_type, Shiboken::SbkType< ::" << metaClass->qualifiedCppName() << " >()))" << endl; Indentation indent(INDENT); s << INDENT << "return " << m_currentErrorCode << ';' << endl << endl; } - s << INDENT; + s << INDENT << "::"; bool hasCppWrapper = shouldGenerateCppWrapper(metaClass); s << (hasCppWrapper ? wrapperName(metaClass) : metaClass->qualifiedCppName()); s << "* cptr = 0;" << endl; @@ -1046,7 +1046,7 @@ void CppGenerator::writeConstructorWrapper(QTextStream& s, const AbstractMetaFun bool hasPythonConvertion = metaClass->typeEntry()->hasTargetConversionRule(); if (hasPythonConvertion) { s << INDENT << "// Try python conversion rules" << endl; - s << INDENT << "cptr = Shiboken::PythonConverter< " << metaClass->qualifiedCppName() << " >::transformFromPython(pyargs[0]);" << endl; + s << INDENT << "cptr = Shiboken::PythonConverter< ::" << metaClass->qualifiedCppName() << " >::transformFromPython(pyargs[0]);" << endl; s << INDENT << "if (!cptr) {" << endl; } @@ -1059,7 +1059,7 @@ void CppGenerator::writeConstructorWrapper(QTextStream& s, const AbstractMetaFun if (hasPythonConvertion) s << INDENT << "}" << endl; - s << INDENT << "if (PyErr_Occurred() || !Shiboken::Object::setCppPointer(sbkSelf, Shiboken::SbkType<" << metaClass->qualifiedCppName() << " >(), cptr)) {" << endl; + s << INDENT << "if (PyErr_Occurred() || !Shiboken::Object::setCppPointer(sbkSelf, Shiboken::SbkType< ::" << metaClass->qualifiedCppName() << " >(), cptr)) {" << endl; { Indentation indent(INDENT); s << INDENT << "delete cptr;" << endl; @@ -1238,7 +1238,7 @@ void CppGenerator::writeMethodWrapper(QTextStream& s, const AbstractMetaFunction protectedClassWrapperName = wrapperName(rfunc->ownerClass()); s << protectedClassWrapperName; } else { - s << rfunc->ownerClass()->qualifiedCppName(); + s << "::" << rfunc->ownerClass()->qualifiedCppName(); } s << "* " CPP_SELF_VAR " = 0;" << endl; @@ -1488,7 +1488,7 @@ void CppGenerator::writeCppSelfDefinition(QTextStream& s, const AbstractMetaFunc if (avoidProtectedHack()) { QString _wrapperName = wrapperName(func->ownerClass()); bool hasProtectedMembers = func->ownerClass()->hasProtectedMembers(); - s << (hasProtectedMembers ? _wrapperName : func->ownerClass()->qualifiedCppName()); + s << "::" << (hasProtectedMembers ? _wrapperName : func->ownerClass()->qualifiedCppName()); s << "* " CPP_SELF_VAR " = "; s << (hasProtectedMembers ? QString("(%1*)").arg(_wrapperName) : ""); } else { @@ -1641,7 +1641,7 @@ void CppGenerator::writeArgumentConversion(QTextStream& s, s << INDENT << typeName << ' ' << argName << " = "; if (!defaultValue.isEmpty()) s << pyArgName << " ? "; - s << "Shiboken::Converter<" << typeName << " >::toCpp(" << pyArgName << ')'; + s << "Shiboken::Converter< " << typeName << " >::toCpp(" << pyArgName << ')'; if (!defaultValue.isEmpty()) { s << " : "; if (argType->isValue()) @@ -2168,7 +2168,7 @@ void CppGenerator::writeMethodCall(QTextStream& s, const AbstractMetaFunction* f if (func->isConstructor() || func->isCopyConstructor()) { isCtor = true; QString className = wrapperName(func->ownerClass()); - mc << "new " << className << '('; + mc << "new ::" << className << '('; if (func->isCopyConstructor() && maxArgs == 1) { mc << CPP_ARG0; } else { @@ -2183,14 +2183,14 @@ void CppGenerator::writeMethodCall(QTextStream& s, const AbstractMetaFunction* f } else { if (func->isConstant()) { if (avoidProtectedHack()) { - mc << "const_cast<const "; + mc << "const_cast<const ::"; if (func->ownerClass()->hasProtectedMembers()) mc << wrapperName(func->ownerClass()); else mc << func->ownerClass()->qualifiedCppName(); mc << "*>(" CPP_SELF_VAR ")->"; } else { - mc << "const_cast<const " << func->ownerClass()->qualifiedCppName(); + mc << "const_cast<const ::" << func->ownerClass()->qualifiedCppName(); mc << "*>(" CPP_SELF_VAR ")->"; } } else { @@ -2425,12 +2425,12 @@ void CppGenerator::writeSpecialCastFunction(QTextStream& s, const AbstractMetaCl QString className = metaClass->qualifiedCppName(); s << "static void* " << cpythonSpecialCastFunctionName(metaClass) << "(void* obj, SbkObjectType* desiredType)\n"; s << "{\n"; - s << INDENT << className << "* me = reinterpret_cast<" << className << "*>(obj);\n"; + s << INDENT << className << "* me = reinterpret_cast< ::" << className << "*>(obj);\n"; bool firstClass = true; foreach (const AbstractMetaClass* baseClass, getAllAncestors(metaClass)) { s << INDENT << (!firstClass ? "else " : "") << "if (desiredType == reinterpret_cast<SbkObjectType*>(" << cpythonTypeNameExt(baseClass->typeEntry()) << "))\n"; Indentation indent(INDENT); - s << INDENT << "return static_cast<" << baseClass->qualifiedCppName() << "*>(me);\n"; + s << INDENT << "return static_cast< ::" << baseClass->qualifiedCppName() << "*>(me);\n"; firstClass = false; } s << INDENT << "return me;\n"; @@ -2880,19 +2880,19 @@ void CppGenerator::writeCopyFunction(QTextStream& s, const AbstractMetaClass *me s << "static PyObject *" << className << "___copy__(PyObject *self)" << endl; s << "{" << endl; - s << INDENT << metaClass->qualifiedCppName() << "* " CPP_SELF_VAR " = 0;" << endl; + s << INDENT << "::" << metaClass->qualifiedCppName() << "* " CPP_SELF_VAR " = 0;" << endl; s << INDENT << "if (!Shiboken::Object::isValid(self))" << endl; { Indentation indent(INDENT); s << INDENT << "return 0;" << endl; } - s << INDENT << "cppSelf = Shiboken::Converter<" << metaClass->qualifiedCppName() << "*>::toCpp(self);" << endl; + s << INDENT << "cppSelf = Shiboken::Converter< ::" << metaClass->qualifiedCppName() << "*>::toCpp(self);" << endl; s << INDENT << "PyObject* " PYTHON_RETURN_VAR " = 0;" << endl; - s << INDENT << metaClass->qualifiedCppName() << "* copy = new " << metaClass->qualifiedCppName(); + s << INDENT << "::" << metaClass->qualifiedCppName() << "* copy = new ::" << metaClass->qualifiedCppName(); s << "(*cppSelf);" << endl; - s << INDENT << PYTHON_RETURN_VAR " = Shiboken::Converter<" << metaClass->qualifiedCppName(); + s << INDENT << PYTHON_RETURN_VAR " = Shiboken::Converter< ::" << metaClass->qualifiedCppName(); s << "*>::toPython(copy);" << endl; s << INDENT << "Shiboken::Object::getOwnership(" PYTHON_RETURN_VAR ");" << endl; @@ -3346,7 +3346,7 @@ void CppGenerator::writeSignalInitialization(QTextStream& s, const AbstractMetaC if (isObjectType) originalType = originalType.remove(originalType.size()-1, 1); - s << INDENT << "Shiboken::TypeResolver::" << (isObjectType ? "createObjectTypeResolver<" : "createValueTypeResolver<") + s << INDENT << "Shiboken::TypeResolver::" << (isObjectType ? "createObjectTypeResolver< " : "createValueTypeResolver< ") << originalType << " >" << "(\"" << skipNamespace(signalTypeName) << "\");" << endl; } @@ -3501,16 +3501,16 @@ void CppGenerator::writeFlagsBinaryOperator(QTextStream& s, const AbstractMetaEn FlagsTypeEntry* flagsEntry = cppEnum->typeEntry()->flags(); Q_ASSERT(flagsEntry); - QString converter = "Shiboken::Converter<" + flagsEntry->originalName() + " >::"; + QString converter = "Shiboken::Converter< ::" + flagsEntry->originalName() + " >::"; s << "PyObject* " << cpythonEnumName(cppEnum) << "___" << pyOpName << "__(PyObject* self, PyObject* arg)" << endl; s << '{' << endl; - s << INDENT << "return Shiboken::Converter< " << flagsEntry->originalName() << " >::toPython(" << endl; + s << INDENT << "return Shiboken::Converter< ::" << flagsEntry->originalName() << " >::toPython(" << endl; { Indentation indent(INDENT); - s << INDENT << "Shiboken::Converter<" << flagsEntry->originalName() << ">::toCpp(self)" << endl; - s << INDENT << cppOpName << " Shiboken::Converter< "; + s << INDENT << "Shiboken::Converter< ::" << flagsEntry->originalName() << ">::toCpp(self)" << endl; + s << INDENT << cppOpName << " Shiboken::Converter< ::"; s << flagsEntry->originalName() << " >::toCpp(arg)" << endl; } s << INDENT << ");" << endl; @@ -3523,7 +3523,7 @@ void CppGenerator::writeFlagsUnaryOperator(QTextStream& s, const AbstractMetaEnu FlagsTypeEntry* flagsEntry = cppEnum->typeEntry()->flags(); Q_ASSERT(flagsEntry); - QString converter = "Shiboken::Converter<" + flagsEntry->originalName() + " >::"; + QString converter = "Shiboken::Converter< ::" + flagsEntry->originalName() + " >::"; s << "PyObject* " << cpythonEnumName(cppEnum) << "___" << pyOpName << "__(PyObject* self, PyObject* arg)" << endl; s << '{' << endl; @@ -3621,7 +3621,7 @@ void CppGenerator::writeClassRegister(QTextStream& s, const AbstractMetaClass* m if (metaClass->typeEntry()->isValue()) dtorClassName = wrapperName(metaClass); - s << INDENT << "Shiboken::ObjectType::setDestructorFunction(&" << cpythonTypeName(metaClass) << ", &Shiboken::callCppDestructor<" << dtorClassName << " >);" << endl; + s << INDENT << "Shiboken::ObjectType::setDestructorFunction(&" << cpythonTypeName(metaClass) << ", &Shiboken::callCppDestructor< ::" << dtorClassName << " >);" << endl; } s << INDENT << "Py_INCREF((PyObject*)&" << pyTypeName << "); //Incref due the 'PyModule_AddObject' steals the reference." << endl; @@ -3756,7 +3756,7 @@ void CppGenerator::writeTypeDiscoveryFunction(QTextStream& s, const AbstractMeta s << "static SbkObjectType* " << cpythonBaseName(metaClass) << "_typeDiscovery(void* cptr, SbkObjectType* instanceType)\n{" << endl; if (!metaClass->baseClass()) { - s << INDENT << "TypeResolver* typeResolver = TypeResolver::get(typeid(*reinterpret_cast<" + s << INDENT << "TypeResolver* typeResolver = TypeResolver::get(typeid(*reinterpret_cast< ::" << metaClass->qualifiedCppName() << "*>(cptr)).name());" << endl; s << INDENT << "if (typeResolver)" << endl; { @@ -3764,7 +3764,7 @@ void CppGenerator::writeTypeDiscoveryFunction(QTextStream& s, const AbstractMeta s << INDENT << "return reinterpret_cast<SbkObjectType*>(typeResolver->pythonType());" << endl; } } else if (!polymorphicExpr.isEmpty()) { - polymorphicExpr = polymorphicExpr.replace("%1", " reinterpret_cast<"+metaClass->qualifiedCppName()+"*>(cptr)"); + polymorphicExpr = polymorphicExpr.replace("%1", " reinterpret_cast< ::" + metaClass->qualifiedCppName() + "*>(cptr)"); s << INDENT << " if (" << polymorphicExpr << ")" << endl; { Indentation indent(INDENT); @@ -3776,9 +3776,9 @@ void CppGenerator::writeTypeDiscoveryFunction(QTextStream& s, const AbstractMeta if (ancestor->baseClass()) continue; if (ancestor->isPolymorphic()) { - s << INDENT << "if (instanceType == reinterpret_cast<SbkObjectType*>(Shiboken::SbkType<" - << ancestor->qualifiedCppName() << " >()) && dynamic_cast<" << metaClass->qualifiedCppName() - << "*>(reinterpret_cast<"<< ancestor->qualifiedCppName() << "*>(cptr)))" << endl; + s << INDENT << "if (instanceType == reinterpret_cast<SbkObjectType*>(Shiboken::SbkType< ::" + << ancestor->qualifiedCppName() << " >()) && dynamic_cast< ::" << metaClass->qualifiedCppName() + << "*>(reinterpret_cast< ::"<< ancestor->qualifiedCppName() << "*>(cptr)))" << endl; Indentation indent(INDENT); s << INDENT << "return &" << cpythonTypeName(metaClass) << ';' << endl; } else { @@ -3814,7 +3814,7 @@ void CppGenerator::writeGetattroFunction(QTextStream& s, const AbstractMetaClass QString getattrFunc; if (usePySideExtensions() && metaClass->isQObject()) - getattrFunc = "PySide::getMetaDataFromQObject(Shiboken::Converter<QObject*>::toCpp(self), self, name)"; + getattrFunc = "PySide::getMetaDataFromQObject(Shiboken::Converter< ::QObject*>::toCpp(self), self, name)"; else getattrFunc = "PyObject_GenericGetAttr(self, name)"; @@ -4075,10 +4075,10 @@ void CppGenerator::finishGeneration() s << INDENT << "// Register primitive types on TypeResolver" << endl; foreach(const PrimitiveTypeEntry* pte, primitiveTypes()) { if (pte->generateCode()) - s << INDENT << "Shiboken::TypeResolver::createValueTypeResolver<" << pte->name() << " >(\"" << pte->name() << "\");" << endl; + s << INDENT << "Shiboken::TypeResolver::createValueTypeResolver< " << pte->name() << " >(\"" << pte->name() << "\");" << endl; } // Register type resolver for all containers found in signals. - QSet<QString> typeResolvers; + QSet<QByteArray> typeResolvers; foreach (AbstractMetaClass* metaClass, classes()) { if (!metaClass->isQObject() || !metaClass->typeEntry()->generateCode()) continue; @@ -4087,14 +4087,16 @@ void CppGenerator::finishGeneration() foreach (AbstractMetaArgument* arg, func->arguments()) { if (arg->type()->isContainer()) { QString value = translateType(arg->type(), metaClass, ExcludeConst | ExcludeReference); + if (value.startsWith("::")) + value.remove(0, 2); typeResolvers << SBK_NORMALIZED_TYPE(value.toAscii().constData()); } } } } } - foreach (QString type, typeResolvers) - s << INDENT << "Shiboken::TypeResolver::createValueTypeResolver<" << type << " >(\"" << type << "\");" << endl; + foreach (QByteArray type, typeResolvers) + s << INDENT << "Shiboken::TypeResolver::createValueTypeResolver< ::" << type << " >(\"" << type << "\");" << endl; s << endl << INDENT << "if (PyErr_Occurred()) {" << endl; { @@ -4233,7 +4235,7 @@ void CppGenerator::writeStdListWrapperMethods(QTextStream& s, const AbstractMeta s << "Py_ssize_t " << cpythonBaseName(metaClass->typeEntry()) << "__len__" << "(PyObject* self)" << endl << '{' << endl; s << INDENT << "if (!Shiboken::Object::isValid(self))" << endl; s << INDENT << INDENT << "return 0;" << endl << endl; - s << INDENT << metaClass->qualifiedCppName() << " &cppSelf = Shiboken::Converter<" << metaClass->qualifiedCppName() <<"& >::toCpp(self);" << endl; + s << INDENT << metaClass->qualifiedCppName() << " &cppSelf = Shiboken::Converter< ::" << metaClass->qualifiedCppName() <<"& >::toCpp(self);" << endl; s << INDENT << "return cppSelf.size();" << endl; s << "}" << endl; @@ -4241,27 +4243,27 @@ void CppGenerator::writeStdListWrapperMethods(QTextStream& s, const AbstractMeta s << "PyObject* " << cpythonBaseName(metaClass->typeEntry()) << "__getitem__" << "(PyObject* self, Py_ssize_t _i)" << endl << '{' << endl; s << INDENT << "if (!Shiboken::Object::isValid(self))" << endl; s << INDENT << INDENT << "return 0;" << endl << endl; - s << INDENT << metaClass->qualifiedCppName() << " &cppSelf = Shiboken::Converter<" << metaClass->qualifiedCppName() <<"& >::toCpp(self);" << endl; + s << INDENT << metaClass->qualifiedCppName() << " &cppSelf = Shiboken::Converter< ::" << metaClass->qualifiedCppName() <<"& >::toCpp(self);" << endl; s << INDENT << "if (_i < 0 || _i >= (Py_ssize_t) cppSelf.size()) {" << endl; s << INDENT << INDENT << "PyErr_SetString(PyExc_IndexError, \"index out of bounds\");" << endl; s << INDENT << INDENT << "return 0;" << endl << INDENT << "}" << endl; s << INDENT << metaClass->qualifiedCppName() << "::iterator _item = cppSelf.begin();" << endl; s << INDENT << "for(Py_ssize_t pos=0; pos < _i; pos++) _item++;" << endl; - s << INDENT << "return Shiboken::Converter<" << metaClass->qualifiedCppName() << "::value_type>::toPython(*_item);" << endl; + s << INDENT << "return Shiboken::Converter< ::" << metaClass->qualifiedCppName() << "::value_type>::toPython(*_item);" << endl; s << "}" << endl; //setitem s << "int " << cpythonBaseName(metaClass->typeEntry()) << "__setitem__" << "(PyObject* self, Py_ssize_t _i, PyObject* _value)" << endl << '{' << endl; s << INDENT << "if (!Shiboken::Object::isValid(self))" << endl; s << INDENT << INDENT << "return -1;" << endl; - s << INDENT << metaClass->qualifiedCppName() << " &cppSelf = Shiboken::Converter<" << metaClass->qualifiedCppName() <<"& >::toCpp(self);" << endl; + s << INDENT << metaClass->qualifiedCppName() << " &cppSelf = Shiboken::Converter< ::" << metaClass->qualifiedCppName() <<"& >::toCpp(self);" << endl; s << INDENT << "if (_i < 0 || _i >= (Py_ssize_t) cppSelf.size()) {" << endl; s << INDENT << INDENT << "PyErr_SetString(PyExc_IndexError, \"list assignment index out of range\");" << endl; s << INDENT << INDENT << "return -1;" << endl << INDENT << "}" << endl; s << INDENT << metaClass->qualifiedCppName() << "::iterator _item = cppSelf.begin();" << endl; s << INDENT << "for(Py_ssize_t pos=0; pos < _i; pos++) _item++;" << endl; - s << INDENT << metaClass->qualifiedCppName() << "::value_type cppValue = Shiboken::Converter<" << metaClass->qualifiedCppName() << "::value_type>::toCpp(_value);" << endl; + s << INDENT << metaClass->qualifiedCppName() << "::value_type cppValue = Shiboken::Converter< ::" << metaClass->qualifiedCppName() << "::value_type>::toCpp(_value);" << endl; s << INDENT << "*_item = cppValue;" << endl; s << INDENT << "return 0;"; s << endl << "}" << endl; diff --git a/generator/shibokengenerator.cpp b/generator/shibokengenerator.cpp index 8d98869d7..6e300d564 100644 --- a/generator/shibokengenerator.cpp +++ b/generator/shibokengenerator.cpp @@ -487,7 +487,7 @@ QString ShibokenGenerator::cpythonWrapperCPtr(const AbstractMetaType* metaType, QString ShibokenGenerator::cpythonWrapperCPtr(const TypeEntry* type, QString argName) { if (type->isValue() || type->isObject()) - return baseConversionString(type->qualifiedCppName() + '*') + "toCpp(" + argName + ')'; + return baseConversionString( "::" + type->qualifiedCppName() + '*') + "toCpp(" + argName + ')'; return QString(); } @@ -519,8 +519,6 @@ void ShibokenGenerator::writeBaseConversion(QTextStream& s, const TypeEntry* typ typeName = protectedEnumSurrogateName(metaEnum); } else { typeName = type->qualifiedCppName().trimmed(); - if (!type->isCppPrimitive()) - typeName.prepend("::"); if (type->isObject()) typeName.append('*'); } @@ -542,8 +540,6 @@ void ShibokenGenerator::writeBaseConversion(QTextStream& s, const AbstractMetaTy if (type->isContainer() || type->isFlags() || type->isEnum() || (type->isConstant() && type->isReference())) options |= Generator::ExcludeReference; typeName = translateTypeForWrapperMethod(type, context, options).trimmed(); - if (!type->typeEntry()->isCppPrimitive()) - typeName.prepend("::"); } s << baseConversionString(typeName); |