diff options
Diffstat (limited to 'sources/shiboken6/generator')
8 files changed, 54 insertions, 59 deletions
diff --git a/sources/shiboken6/generator/generator.cpp b/sources/shiboken6/generator/generator.cpp index 750d3c3a4..42f53a6ec 100644 --- a/sources/shiboken6/generator/generator.cpp +++ b/sources/shiboken6/generator/generator.cpp @@ -312,9 +312,8 @@ void Generator::collectInstantiatedContainersAndSmartPointers(const AbstractMeta const AbstractMetaFunctionList &funcs = metaClass->functions(); for (const AbstractMetaFunction *func : funcs) collectInstantiatedContainersAndSmartPointers(func); - const AbstractMetaFieldList &fields = metaClass->fields(); - for (const AbstractMetaField *field : fields) - addInstantiatedContainersAndSmartPointers(field->type(), field->name()); + for (const AbstractMetaField &field : metaClass->fields()) + addInstantiatedContainersAndSmartPointers(field.type(), field.name()); const AbstractMetaClassList &innerClasses = metaClass->innerClasses(); for (AbstractMetaClass *innerClass : innerClasses) collectInstantiatedContainersAndSmartPointers(innerClass); diff --git a/sources/shiboken6/generator/qtdoc/qtdocgenerator.cpp b/sources/shiboken6/generator/qtdoc/qtdocgenerator.cpp index 7feaf5e1f..ec514c460 100644 --- a/sources/shiboken6/generator/qtdoc/qtdocgenerator.cpp +++ b/sources/shiboken6/generator/qtdoc/qtdocgenerator.cpp @@ -1780,10 +1780,9 @@ void QtDocGenerator::writeFields(QTextStream& s, const AbstractMetaClass* cppCla { static const QString section_title = QLatin1String(".. attribute:: "); - const AbstractMetaFieldList &fields = cppClass->fields(); - for (AbstractMetaField *field : fields) { - s << section_title << cppClass->fullName() << "." << field->name() << Qt::endl << Qt::endl; - writeFormattedText(s, field->documentation().value(), cppClass); + for (const AbstractMetaField &field : cppClass->fields()) { + s << section_title << cppClass->fullName() << "." << field.name() << "\n\n"; + writeFormattedText(s, field.documentation().value(), cppClass); } } diff --git a/sources/shiboken6/generator/shiboken/cppgenerator.cpp b/sources/shiboken6/generator/shiboken/cppgenerator.cpp index bd0bef574..c06f072d1 100644 --- a/sources/shiboken6/generator/shiboken/cppgenerator.cpp +++ b/sources/shiboken6/generator/shiboken/cppgenerator.cpp @@ -295,9 +295,9 @@ static bool isPointerToConst(const AbstractMetaType &t) && indirections.constLast() != Indirection::ConstPointer; } -static inline bool canGenerateFieldSetter(const AbstractMetaField *field) +static inline bool canGenerateFieldSetter(const AbstractMetaField &field) { - const AbstractMetaType &type = field->type(); + const AbstractMetaType &type = field.type(); return !type.isConstant() || isPointerToConst(type); } @@ -704,8 +704,8 @@ void CppGenerator::generateClass(QTextStream &s, const GeneratorContext &classCo if (shouldGenerateGetSetList(metaClass) && !classContext.forSmartPointer()) { const AbstractMetaFieldList &fields = metaClass->fields(); - for (const AbstractMetaField *metaField : fields) { - if (metaField->isStatic()) + for (const AbstractMetaField &metaField : fields) { + if (metaField.isStatic()) continue; writeGetterFunction(s, metaField, classContext); if (canGenerateFieldSetter(metaField)) @@ -723,12 +723,12 @@ void CppGenerator::generateClass(QTextStream &s, const GeneratorContext &classCo s << "// Getters and Setters for " << metaClass->name() << Qt::endl; s << "static PyGetSetDef " << cpythonGettersSettersDefinitionName(metaClass) << "[] = {\n"; - for (const AbstractMetaField *metaField : fields) { - if (!metaField->isStatic()) { + for (const AbstractMetaField &metaField : fields) { + if (!metaField.isStatic()) { s << INDENT; const QString setter = canGenerateFieldSetter(metaField) ? cpythonSetterFunctionName(metaField) : QString(); - writePyGetSetDefEntry(s, metaField->name(), + writePyGetSetDefEntry(s, metaField.name(), cpythonGetterFunctionName(metaField), setter); } } @@ -4070,9 +4070,8 @@ bool CppGenerator::supportsSequenceProtocol(const AbstractMetaClass *metaClass) bool CppGenerator::shouldGenerateGetSetList(const AbstractMetaClass *metaClass) { - const AbstractMetaFieldList &fields = metaClass->fields(); - for (const AbstractMetaField *f : fields) { - if (!f->isStatic()) + for (const AbstractMetaField &f : metaClass->fields()) { + if (!f.isStatic()) return true; } // Generate all user-added properties unless Pyside extensions are used, @@ -4517,7 +4516,7 @@ static inline void writeGetterFunctionStart(QTextStream &s, const QString &funcN } void CppGenerator::writeGetterFunction(QTextStream &s, - const AbstractMetaField *metaField, + const AbstractMetaField &metaField, const GeneratorContext &context) { ErrorCode errorCode(QString::fromLatin1(NULL_PTR)); @@ -4525,17 +4524,17 @@ void CppGenerator::writeGetterFunction(QTextStream &s, writeCppSelfDefinition(s, context); - AbstractMetaType fieldType = metaField->type(); + AbstractMetaType fieldType = metaField.type(); // Force use of pointer to return internal variable memory bool newWrapperSameObject = !fieldType.isConstant() && isWrapperType(fieldType) && !isPointer(fieldType); QString cppField; - if (avoidProtectedHack() && metaField->isProtected()) { + if (avoidProtectedHack() && metaField.isProtected()) { QTextStream(&cppField) << "static_cast<" << context.wrapperName() << " *>(" << CPP_SELF_VAR << ")->" << protectedFieldGetterName(metaField) << "()"; } else { - cppField = QLatin1String(CPP_SELF_VAR) + QLatin1String("->") + metaField->name(); + cppField = QLatin1String(CPP_SELF_VAR) + QLatin1String("->") + metaField.name(); if (newWrapperSameObject) { cppField.prepend(QLatin1String("&(")); cppField.append(QLatin1Char(')')); @@ -4544,7 +4543,7 @@ void CppGenerator::writeGetterFunction(QTextStream &s, if (isCppIntegralPrimitive(fieldType) || fieldType.isEnum()) { s << INDENT << getFullTypeNameWithoutModifiers(fieldType) << " cppOut_local = " << cppField << ";\n"; cppField = QLatin1String("cppOut_local"); - } else if (avoidProtectedHack() && metaField->isProtected()) { + } else if (avoidProtectedHack() && metaField.isProtected()) { s << INDENT << getFullTypeNameWithoutModifiers(fieldType); if (fieldType.isContainer() || fieldType.isFlags() || fieldType.isSmartPointer()) { s << " &"; @@ -4594,7 +4593,7 @@ void CppGenerator::writeGetterFunction(QTextStream &s, s << INDENT << "Shiboken::Object::setParent(self, pyOut)"; } else { s << INDENT << "pyOut = "; - writeToPythonConversion(s, fieldType, metaField->enclosingClass(), cppField); + writeToPythonConversion(s, fieldType, metaField.enclosingClass(), cppField); } s << ";\n"; @@ -4652,18 +4651,18 @@ void CppGenerator::writeSetterFunctionPreamble(QTextStream &s, const QString &na } void CppGenerator::writeSetterFunction(QTextStream &s, - const AbstractMetaField *metaField, + const AbstractMetaField &metaField, const GeneratorContext &context) { ErrorCode errorCode(0); - const AbstractMetaType &fieldType = metaField->type(); - writeSetterFunctionPreamble(s, metaField->name(), cpythonSetterFunctionName(metaField), + const AbstractMetaType &fieldType = metaField.type(); + writeSetterFunctionPreamble(s, metaField.name(), cpythonSetterFunctionName(metaField), fieldType, context); - QString cppField = QString::fromLatin1("%1->%2").arg(QLatin1String(CPP_SELF_VAR), metaField->name()); + QString cppField = QLatin1String(CPP_SELF_VAR) + QLatin1String("->") + metaField.name(); s << INDENT; - if (avoidProtectedHack() && metaField->isProtected()) { + if (avoidProtectedHack() && metaField.isProtected()) { s << getFullTypeNameWithoutModifiers(fieldType); s << (fieldType.indirections() == 1 ? " *" : "") << " cppOut;\n"; s << INDENT << PYTHON_TO_CPP_VAR << "(pyIn, &cppOut);\n"; @@ -4686,7 +4685,7 @@ void CppGenerator::writeSetterFunction(QTextStream &s, if (isPointerToWrapperType(fieldType)) { s << INDENT << "Shiboken::Object::keepReference(reinterpret_cast<SbkObject *>(self), \""; - s << metaField->name() << "\", pyIn);\n"; + s << metaField.name() << "\", pyIn);\n"; } s << INDENT << "return 0;\n"; @@ -5438,12 +5437,12 @@ void CppGenerator::writeClassRegister(QTextStream &s, // Write static fields const AbstractMetaFieldList &fields = metaClass->fields(); - for (const AbstractMetaField *field : fields) { - if (!field->isStatic()) + for (const AbstractMetaField &field : fields) { + if (!field.isStatic()) continue; s << INDENT << QLatin1String("PyDict_SetItemString(reinterpret_cast<PyTypeObject *>(") + cpythonTypeName(metaClass) + QLatin1String(")->tp_dict, \""); - s << field->name() << "\", "; - writeToPythonConversion(s, field->type(), metaClass, metaClass->qualifiedCppName() + QLatin1String("::") + field->name()); + s << field.name() << "\", "; + writeToPythonConversion(s, field.type(), metaClass, field.qualifiedCppName()); s << ");\n"; } s << Qt::endl; diff --git a/sources/shiboken6/generator/shiboken/cppgenerator.h b/sources/shiboken6/generator/shiboken/cppgenerator.h index 25d4b22db..b4b7f1a29 100644 --- a/sources/shiboken6/generator/shiboken/cppgenerator.h +++ b/sources/shiboken6/generator/shiboken/cppgenerator.h @@ -290,7 +290,7 @@ private: void writeCopyFunction(QTextStream &s, const GeneratorContext &context); void writeGetterFunction(QTextStream &s, - const AbstractMetaField *metaField, + const AbstractMetaField &metaField, const GeneratorContext &context); void writeGetterFunction(QTextStream &s, const QPropertySpec *property, @@ -301,7 +301,7 @@ private: const AbstractMetaType &type, const GeneratorContext &context); void writeSetterFunction(QTextStream &s, - const AbstractMetaField *metaField, + const AbstractMetaField &metaField, const GeneratorContext &context); void writeSetterFunction(QTextStream &s, const QPropertySpec *property, diff --git a/sources/shiboken6/generator/shiboken/headergenerator.cpp b/sources/shiboken6/generator/shiboken/headergenerator.cpp index 3d707318c..83f42f687 100644 --- a/sources/shiboken6/generator/shiboken/headergenerator.cpp +++ b/sources/shiboken6/generator/shiboken/headergenerator.cpp @@ -69,11 +69,11 @@ void HeaderGenerator::writeCopyCtor(QTextStream &s, const AbstractMetaClass *met s << INDENT << "}\n\n"; } -void HeaderGenerator::writeProtectedFieldAccessors(QTextStream &s, const AbstractMetaField *field) const +void HeaderGenerator::writeProtectedFieldAccessors(QTextStream &s, const AbstractMetaField &field) const { - const AbstractMetaType &metaType = field->type(); + const AbstractMetaType &metaType = field.type(); QString fieldType = metaType.cppSignature(); - QString fieldName = field->enclosingClass()->qualifiedCppName() + QLatin1String("::") + field->name(); + const QString fieldName = field.qualifiedCppName(); // Force use of pointer to return internal variable memory bool useReference = (!metaType.isConstant() && @@ -160,9 +160,8 @@ void HeaderGenerator::generateClass(QTextStream &s, const GeneratorContext &clas maxOverrides = 1; if (avoidProtectedHack() && metaClass->hasProtectedFields()) { - const AbstractMetaFieldList &fields = metaClass->fields(); - for (AbstractMetaField *field : fields) { - if (!field->isProtected()) + for (const AbstractMetaField &field : metaClass->fields()) { + if (!field.isProtected()) continue; writeProtectedFieldAccessors(s, field); } diff --git a/sources/shiboken6/generator/shiboken/headergenerator.h b/sources/shiboken6/generator/shiboken/headergenerator.h index d02516b8d..3678a5e1f 100644 --- a/sources/shiboken6/generator/shiboken/headergenerator.h +++ b/sources/shiboken6/generator/shiboken/headergenerator.h @@ -53,7 +53,7 @@ protected: private: void writeCopyCtor(QTextStream &s, const AbstractMetaClass *metaClass) const; - void writeProtectedFieldAccessors(QTextStream &s, const AbstractMetaField *field) const; + void writeProtectedFieldAccessors(QTextStream &s, const AbstractMetaField &field) const; void writeFunction(QTextStream &s, const AbstractMetaFunction *func); void writeSbkTypeFunction(QTextStream &s, const AbstractMetaEnum *cppEnum); void writeSbkTypeFunction(QTextStream &s, const AbstractMetaClass *cppClass); diff --git a/sources/shiboken6/generator/shiboken/shibokengenerator.cpp b/sources/shiboken6/generator/shiboken/shibokengenerator.cpp index d9733386f..09c9cc501 100644 --- a/sources/shiboken6/generator/shiboken/shibokengenerator.cpp +++ b/sources/shiboken6/generator/shiboken/shibokengenerator.cpp @@ -388,14 +388,14 @@ QString ShibokenGenerator::protectedEnumSurrogateName(const AbstractMetaEnum *me return metaEnum->fullName().replace(QLatin1Char('.'), QLatin1Char('_')).replace(QLatin1String("::"), QLatin1String("_")) + QLatin1String("_Surrogate"); } -QString ShibokenGenerator::protectedFieldGetterName(const AbstractMetaField *field) +QString ShibokenGenerator::protectedFieldGetterName(const AbstractMetaField &field) { - return QStringLiteral("protected_%1_getter").arg(field->name()); + return QStringLiteral("protected_%1_getter").arg(field.name()); } -QString ShibokenGenerator::protectedFieldSetterName(const AbstractMetaField *field) +QString ShibokenGenerator::protectedFieldSetterName(const AbstractMetaField &field) { - return QStringLiteral("protected_%1_setter").arg(field->name()); + return QStringLiteral("protected_%1_setter").arg(field.name()); } QString ShibokenGenerator::cpythonFunctionName(const AbstractMetaFunction *func) @@ -457,14 +457,14 @@ QString ShibokenGenerator::cpythonSetterFunctionName(const QString &name, return cpythonBaseName(enclosingClass) + QStringLiteral("_set_") + name; } -QString ShibokenGenerator::cpythonGetterFunctionName(const AbstractMetaField *metaField) +QString ShibokenGenerator::cpythonGetterFunctionName(const AbstractMetaField &metaField) { - return cpythonGetterFunctionName(metaField->name(), metaField->enclosingClass()); + return cpythonGetterFunctionName(metaField.name(), metaField.enclosingClass()); } -QString ShibokenGenerator::cpythonSetterFunctionName(const AbstractMetaField *metaField) +QString ShibokenGenerator::cpythonSetterFunctionName(const AbstractMetaField &metaField) { - return cpythonSetterFunctionName(metaField->name(), metaField->enclosingClass()); + return cpythonSetterFunctionName(metaField.name(), metaField.enclosingClass()); } QString ShibokenGenerator::cpythonGetterFunctionName(const QPropertySpec *property, @@ -608,11 +608,10 @@ QString ShibokenGenerator::guessScopeForDefaultValue(const AbstractMetaFunction Q_ASSERT(unknowArgumentRegEx.isValid()); const QRegularExpressionMatch match = unknowArgumentRegEx.match(value); if (match.hasMatch() && func->implementingClass()) { - const AbstractMetaFieldList &fields = func->implementingClass()->fields(); - for (const AbstractMetaField *field : fields) { - if (match.captured(1).trimmed() == field->name()) { - QString fieldName = field->name(); - if (field->isStatic()) { + for (const AbstractMetaField &field : func->implementingClass()->fields()) { + if (match.captured(1).trimmed() == field.name()) { + QString fieldName = field.name(); + if (field.isStatic()) { prefix = resolveScopePrefix(func->implementingClass(), value); fieldName.prepend(prefix); prefix.clear(); diff --git a/sources/shiboken6/generator/shiboken/shibokengenerator.h b/sources/shiboken6/generator/shiboken/shibokengenerator.h index 0d49764ab..d2aaa5b1a 100644 --- a/sources/shiboken6/generator/shiboken/shibokengenerator.h +++ b/sources/shiboken6/generator/shiboken/shibokengenerator.h @@ -240,8 +240,8 @@ protected: bool wrapperDiagnostics() const { return m_wrapperDiagnostics; } static QString protectedEnumSurrogateName(const AbstractMetaEnum *metaEnum); - static QString protectedFieldGetterName(const AbstractMetaField *field); - static QString protectedFieldSetterName(const AbstractMetaField *field); + static QString protectedFieldGetterName(const AbstractMetaField &field); + static QString protectedFieldSetterName(const AbstractMetaField &field); static QString pythonPrimitiveTypeName(const QString &cppTypeName); static QString pythonPrimitiveTypeName(const PrimitiveTypeEntry *type); @@ -343,8 +343,8 @@ protected: QString cpythonGettersSettersDefinitionName(const AbstractMetaClass *metaClass); static QString cpythonGetattroFunctionName(const AbstractMetaClass *metaClass); static QString cpythonSetattroFunctionName(const AbstractMetaClass *metaClass); - static QString cpythonGetterFunctionName(const AbstractMetaField *metaField); - static QString cpythonSetterFunctionName(const AbstractMetaField *metaField); + static QString cpythonGetterFunctionName(const AbstractMetaField &metaField); + static QString cpythonSetterFunctionName(const AbstractMetaField &metaField); static QString cpythonGetterFunctionName(const QPropertySpec *property, const AbstractMetaClass *metaClass); static QString cpythonSetterFunctionName(const QPropertySpec *property, |