aboutsummaryrefslogtreecommitdiffstats
path: root/sources/shiboken6/generator
diff options
context:
space:
mode:
Diffstat (limited to 'sources/shiboken6/generator')
-rw-r--r--sources/shiboken6/generator/generator.cpp5
-rw-r--r--sources/shiboken6/generator/qtdoc/qtdocgenerator.cpp7
-rw-r--r--sources/shiboken6/generator/shiboken/cppgenerator.cpp51
-rw-r--r--sources/shiboken6/generator/shiboken/cppgenerator.h4
-rw-r--r--sources/shiboken6/generator/shiboken/headergenerator.cpp11
-rw-r--r--sources/shiboken6/generator/shiboken/headergenerator.h2
-rw-r--r--sources/shiboken6/generator/shiboken/shibokengenerator.cpp25
-rw-r--r--sources/shiboken6/generator/shiboken/shibokengenerator.h8
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,