aboutsummaryrefslogtreecommitdiffstats
path: root/sources/shiboken6/generator/shiboken/cppgenerator.cpp
diff options
context:
space:
mode:
authorFriedemann Kleint <Friedemann.Kleint@qt.io>2022-11-15 14:27:42 +0100
committerFriedemann Kleint <Friedemann.Kleint@qt.io>2022-12-05 13:13:18 +0100
commite3d3bf42619a20e1845a865b992a60883193c001 (patch)
treee7f2f0f74b5dd75e8c5e2944686b95b80e10f312 /sources/shiboken6/generator/shiboken/cppgenerator.cpp
parentdc992c359d96c9018c03b6b631e41bd37186a438 (diff)
shiboken6: Make some AbstractMetaClass query functions free functions
Preparing for the introduction of smart pointers for AbstractMetaClass. Change-Id: Ie8cbf6bd8abbae4445c34611dd7193297611d48e Reviewed-by: Shyamnath Premnadh <Shyamnath.Premnadh@qt.io> Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io>
Diffstat (limited to 'sources/shiboken6/generator/shiboken/cppgenerator.cpp')
-rw-r--r--sources/shiboken6/generator/shiboken/cppgenerator.cpp30
1 files changed, 15 insertions, 15 deletions
diff --git a/sources/shiboken6/generator/shiboken/cppgenerator.cpp b/sources/shiboken6/generator/shiboken/cppgenerator.cpp
index c59cfbc11..4795a596d 100644
--- a/sources/shiboken6/generator/shiboken/cppgenerator.cpp
+++ b/sources/shiboken6/generator/shiboken/cppgenerator.cpp
@@ -540,7 +540,7 @@ void CppGenerator::generateIncludes(TextStream &s, const GeneratorContext &class
s << includeQDebug;
if (metaClass->hasToStringCapability())
s << "#include <QtCore/QBuffer>\n";
- if (metaClass->isQObject()) {
+ if (isQObject(metaClass)) {
s << "#include <pysideqobject.h>\n"
<< "#include <pysidesignal.h>\n"
<< "#include <pysideproperty.h>\n"
@@ -722,7 +722,7 @@ void CppGenerator::generateClass(TextStream &s, const GeneratorContext &classCon
}
if (!avoidProtectedHack() || !metaClass->hasPrivateDestructor()) {
- if (usePySideExtensions() && metaClass->isQObject())
+ if (usePySideExtensions() && isQObject(metaClass))
writeMetaObjectMethod(s, classContext);
writeDestructorNative(s, classContext);
}
@@ -1886,7 +1886,7 @@ void CppGenerator::writeConverterFunctions(TextStream &s, const AbstractMetaClas
// C++ pointer to a Python wrapper, keeping identity.
s << "// C++ to Python pointer conversion - tries to find the Python wrapper for the C++ object (keeps object identity).\n";
c.clear();
- if (usePySideExtensions() && metaClass->isQObject()) {
+ if (usePySideExtensions() && isQObject(metaClass)) {
c << "return PySide::getWrapperForQObject(reinterpret_cast<"
<< typeName << " *>(const_cast<void *>(cppIn)), " << cpythonType << ");\n";
} else {
@@ -2263,7 +2263,7 @@ bool CppGenerator::needsArgumentErrorHandling(const OverloadData &overloadData)
return false;
auto rfunc = overloadData.referenceFunction();
return rfunc->functionType() == AbstractMetaFunction::ConstructorFunction
- && rfunc->ownerClass()->isQObject();
+ && isQObject(rfunc->ownerClass());
}
void CppGenerator::writeMethodWrapperPreamble(TextStream &s,const OverloadData &overloadData,
@@ -2350,7 +2350,7 @@ void CppGenerator::writeConstructorWrapper(TextStream &s, const OverloadData &ov
s << sbkUnusedVariableCast(u"args"_s);
s << sbkUnusedVariableCast(u"kwds"_s);
- const bool needsMetaObject = usePySideExtensions() && metaClass->isQObject();
+ const bool needsMetaObject = usePySideExtensions() && isQObject(metaClass);
if (needsMetaObject)
s << "const QMetaObject *metaObject;\n";
@@ -2603,7 +2603,7 @@ void CppGenerator::writeArgumentsInitializer(TextStream &s, const OverloadData &
// Disable argument count checks for QObject constructors to allow for
// passing properties as KW args.
auto *owner = rfunc->ownerClass();
- bool isQObjectConstructor = owner != nullptr && owner->isQObject()
+ bool isQObjectConstructor = owner != nullptr && isQObject(owner)
&& rfunc->functionType() == AbstractMetaFunction::ConstructorFunction;
if (usesNamedArguments && !isQObjectConstructor) {
@@ -3776,7 +3776,7 @@ static bool forceQObjectNamedArguments(const AbstractMetaFunctionCPtr &func)
return false;
auto *owner = func->ownerClass();
Q_ASSERT(owner);
- if (!owner->isQObject())
+ if (!isQObject(owner))
return false;
const QString &name = owner->name();
return name == u"QVBoxLayout" || name == u"QHBoxLayout"
@@ -3837,7 +3837,7 @@ void CppGenerator::writeNamedArgumentResolution(TextStream &s, const AbstractMet
// until extra keyword signals and properties are handled.
s << "if (PyDict_Size(kwds_dup) > 0) {\n" << indent
<< "errInfo.reset(kwds_dup.release());\n";
- if (!(func->isConstructor() && func->ownerClass()->isQObject()))
+ if (!(func->isConstructor() && isQObject(func->ownerClass())))
s << "goto " << cpythonFunctionName(func) << "_TypeError;\n";
else
s << "// fall through to handle extra keyword signals and properties\n";
@@ -4077,7 +4077,7 @@ void CppGenerator::writeMethodCall(TextStream &s, const AbstractMetaFunctionCPtr
} else {
const QString ctorCall = context.effectiveClassName() + u'('
+ userArgs.join(u", "_s) + u')';
- if (usePySideExtensions() && owner->isQObject()) {
+ if (usePySideExtensions() && isQObject(owner)) {
s << "void *addr = PySide::nextQObjectMemoryAddr();\n";
uva << "if (addr) {\n" << indent
<< "cptr = new (addr) ::" << ctorCall << ";\n"
@@ -4708,7 +4708,7 @@ void CppGenerator::writeClassDefinition(TextStream &s,
bool onlyPrivCtor = !metaClass->hasNonPrivateConstructor();
const bool isQApp = usePySideExtensions()
- && metaClass->inheritsFrom(u"QCoreApplication"_s);
+ && inheritsFrom(metaClass, u"QCoreApplication"_s);
QString tp_flags = u"Py_TPFLAGS_DEFAULT"_s;
if (!metaClass->attributes().testFlag(AbstractMetaClass::FinalCppClass))
@@ -6174,7 +6174,7 @@ void CppGenerator::writeClassRegister(TextStream &s,
writeInitQtMetaTypeFunctionBody(s, classContext);
}
- if (usePySideExtensions() && metaClass->isQObject()) {
+ if (usePySideExtensions() && isQObject(metaClass)) {
s << "Shiboken::ObjectType::setSubTypeInitHook(pyType, &PySide::initQObjectSubType);\n"
<< "PySide::initDynamicMetaObject(pyType, &::"
<< metaClass->qualifiedCppName() << "::staticMetaObject, sizeof(";
@@ -6245,7 +6245,7 @@ QtRegisterMetaType qtMetaTypeRegistration(const AbstractMetaClass *c)
// Default.
if (isObject)
- return c->isQObject() ? QtRegisterMetaType::None : QtRegisterMetaType::Pointer;
+ return isQObject(c) ? QtRegisterMetaType::None : QtRegisterMetaType::Pointer;
return !c->isAbstract() && c->isDefaultConstructible()
? QtRegisterMetaType::Value : QtRegisterMetaType::None;
@@ -6450,7 +6450,7 @@ void CppGenerator::writeGetattroFunction(TextStream &s, AttroCheck attroCheck,
if (usePySideExtensions())
s << "PySide::Feature::Select(self);\n";
- const QString getattrFunc = usePySideExtensions() && metaClass->isQObject()
+ const QString getattrFunc = usePySideExtensions() && isQObject(metaClass)
? qObjectGetAttroFunction() : u"PyObject_GenericGetAttr(self, name)"_s;
if (attroCheck.testFlag(AttroCheckFlag::GetattroOverloads)) {
@@ -7041,14 +7041,14 @@ static bool useParentHeuristics(const ApiExtractorResult &api,
auto *owner = func->ownerClass();
if (owner == nullptr)
return false;
- auto ownerEntry = owner->parentManagementEntry();
+ auto ownerEntry = parentManagementEntry(owner);
if (ownerEntry.isNull())
return false;
auto argTypeEntry = argType.typeEntry();
if (!argTypeEntry->isComplex())
return false;
auto *argClass = AbstractMetaClass::findClass(api.classes(), argTypeEntry);
- return argClass != nullptr && argClass->parentManagementEntry() == ownerEntry;
+ return argClass != nullptr && parentManagementEntry(argClass) == ownerEntry;
}
bool CppGenerator::writeParentChildManagement(TextStream &s, const AbstractMetaFunctionCPtr &func,