diff options
Diffstat (limited to 'sources/shiboken6/ApiExtractor/abstractmetafunction.cpp')
-rw-r--r-- | sources/shiboken6/ApiExtractor/abstractmetafunction.cpp | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/sources/shiboken6/ApiExtractor/abstractmetafunction.cpp b/sources/shiboken6/ApiExtractor/abstractmetafunction.cpp index 5b344f6e1..334288ebf 100644 --- a/sources/shiboken6/ApiExtractor/abstractmetafunction.cpp +++ b/sources/shiboken6/ApiExtractor/abstractmetafunction.cpp @@ -223,6 +223,23 @@ void AbstractMetaFunction::setExplicit(bool isExplicit) d->m_explicit = isExplicit; } +bool AbstractMetaFunction::returnsBool() const +{ + if (d->m_type.typeUsagePattern() != AbstractMetaType::PrimitivePattern) + return false; + auto *pte = static_cast<const PrimitiveTypeEntry *>(d->m_type.typeEntry()); + // Walk along typedefs + while (auto *referencedPte = pte->referencedTypeEntry()) + pte =referencedPte; + return pte->name() == u"bool"; +} + +bool AbstractMetaFunction::isOperatorBool() const +{ + return d->m_functionType == AbstractMetaFunction::ConversionOperator + && d->m_constant && returnsBool(); +} + AbstractMetaFunction::AbstractMetaFunction() : d(new AbstractMetaFunctionPrivate) { } @@ -1100,6 +1117,18 @@ bool AbstractMetaFunction::isAssignmentOperator() const || d->m_functionType == MoveAssignmentOperatorFunction; } +bool AbstractMetaFunction::isGetter() const +{ + return d->m_functionType == NormalFunction && !isVoid() + && d->m_constant && d->m_access == Access::Public + && d->m_arguments.isEmpty(); +} + +bool AbstractMetaFunction::isQtIsNullMethod() const +{ + return isGetter() && d->m_name == u"isNull" && returnsBool(); +} + int AbstractMetaFunction::arityOfOperator() const { if (!isOperatorOverload() || isCallOperator()) |