aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFriedemann Kleint <Friedemann.Kleint@qt.io>2025-12-02 10:06:10 +0100
committerFriedemann Kleint <Friedemann.Kleint@qt.io>2025-12-03 12:53:26 +0100
commitf376bb4c26ebfe98cfad9c9d47eb797e2d909282 (patch)
tree7ab804acd0cb97491ece88b7e232130243a53698
parentb311fabb7e3d29c25fee1c3924d938ca12c1578a (diff)
shiboken6: Move AbstractMetaFunction::Flags out of the class
This enables using them for messages and other things. Task-number: PYSIDE-3245 Change-Id: If2acccbfdbc53d28f84cfe5341898347a9938c53 Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io>
-rw-r--r--sources/shiboken6_generator/ApiExtractor/abstractmetabuilder.cpp16
-rw-r--r--sources/shiboken6_generator/ApiExtractor/abstractmetafunction.cpp6
-rw-r--r--sources/shiboken6_generator/ApiExtractor/abstractmetafunction.h19
-rw-r--r--sources/shiboken6_generator/ApiExtractor/abstractmetalang.cpp4
-rw-r--r--sources/shiboken6_generator/ApiExtractor/abstractmetalang_enums.h17
-rw-r--r--sources/shiboken6_generator/ApiExtractor/messages.cpp4
-rw-r--r--sources/shiboken6_generator/ApiExtractor/qtdocparser.cpp8
7 files changed, 39 insertions, 35 deletions
diff --git a/sources/shiboken6_generator/ApiExtractor/abstractmetabuilder.cpp b/sources/shiboken6_generator/ApiExtractor/abstractmetabuilder.cpp
index 8cc90a30c..bcb4e1834 100644
--- a/sources/shiboken6_generator/ApiExtractor/abstractmetabuilder.cpp
+++ b/sources/shiboken6_generator/ApiExtractor/abstractmetabuilder.cpp
@@ -332,9 +332,9 @@ void AbstractMetaBuilderPrivate::traverseFreeOperatorFunction(const FunctionMode
if (!unaryOperator && first.type().indirections())
metaFunction->setPointerOperator(true);
metaFunction->setArguments(arguments);
- flags.setFlag(AbstractMetaFunction::Flag::OperatorLeadingClassArgumentRemoved);
+ flags.setFlag(InternalFunctionFlag::OperatorLeadingClassArgumentRemoved);
if (first.type().passByValue())
- flags.setFlag(AbstractMetaFunction::Flag::OperatorClassArgumentByValue);
+ flags.setFlag(InternalFunctionFlag::OperatorClassArgumentByValue);
} else {
// If the operator method is not unary and the first operator is
// not of the same type of its owning class we suppose that it
@@ -346,9 +346,9 @@ void AbstractMetaBuilderPrivate::traverseFreeOperatorFunction(const FunctionMode
metaFunction->setPointerOperator(true);
metaFunction->setArguments(arguments);
metaFunction->setReverseOperator(true);
- flags.setFlag(AbstractMetaFunction::Flag::OperatorTrailingClassArgumentRemoved);
+ flags.setFlag(InternalFunctionFlag::OperatorTrailingClassArgumentRemoved);
if (last.type().passByValue())
- flags.setFlag(AbstractMetaFunction::Flag::OperatorClassArgumentByValue);
+ flags.setFlag(InternalFunctionFlag::OperatorClassArgumentByValue);
}
metaFunction->setFlags(flags);
metaFunction->setAccess(Access::Public);
@@ -2185,12 +2185,12 @@ AbstractMetaFunctionPtr
return {};
}
- AbstractMetaFunction::Flags flags;
+ InternalFunctionFlags flags;
auto metaFunction = std::make_shared<AbstractMetaFunction>(functionName);
metaFunction->setCppAttributes(cppAttributes);
metaFunction->setUnresolvedSignatures(signatures);
if (functionItem->isHiddenFriend())
- flags.setFlag(AbstractMetaFunction::Flag::HiddenFriend);
+ flags.setFlag(InternalFunctionFlag::HiddenFriend);
metaFunction->setSourceLocation(functionItem->sourceLocation());
// Additional check for assignment/move assignment down below
@@ -2246,7 +2246,7 @@ AbstractMetaFunctionPtr
case QtSpecialArgument::None:
break;
case QtSpecialArgument::PrivateSignal:
- flags.setFlag(AbstractMetaFunction::Flag::PrivateSignal);
+ flags.setFlag(InternalFunctionFlag::PrivateSignal);
arguments.removeLast(); // Add private signals for documentation purposes
break;
case QtSpecialArgument::Disambiguated:
@@ -3384,7 +3384,7 @@ AbstractMetaFunctionPtr
{
AbstractMetaFunctionPtr f(function->copy());
f->setArguments(AbstractMetaArgumentList());
- f->setFlags(f->flags() | AbstractMetaFunction::Flag::InheritedFromTemplate);
+ f->setFlags(f->flags() | InternalFunctionFlag::InheritedFromTemplate);
if (!function->isVoid()) {
auto returnType = inheritTemplateType(templateTypes, function->type());
diff --git a/sources/shiboken6_generator/ApiExtractor/abstractmetafunction.cpp b/sources/shiboken6_generator/ApiExtractor/abstractmetafunction.cpp
index 486a8b30f..1d74252dc 100644
--- a/sources/shiboken6_generator/ApiExtractor/abstractmetafunction.cpp
+++ b/sources/shiboken6_generator/ApiExtractor/abstractmetafunction.cpp
@@ -89,7 +89,7 @@ public:
SourceLocation m_sourceLocation;
AbstractMetaFunction::Attributes m_attributes;
FunctionAttributes m_cppAttributes;
- AbstractMetaFunction::Flags m_flags;
+ InternalFunctionFlags m_flags;
uint m_constant : 1;
uint m_reverse : 1;
uint m_pointerOperator : 1;
@@ -277,12 +277,12 @@ void AbstractMetaFunction::setCppAttribute(FunctionAttribute a, bool on)
d->m_cppAttributes.setFlag(a, on);
}
-AbstractMetaFunction::Flags AbstractMetaFunction::flags() const
+InternalFunctionFlags AbstractMetaFunction::flags() const
{
return d->m_flags;
}
-void AbstractMetaFunction::setFlags(Flags f)
+void AbstractMetaFunction::setFlags(InternalFunctionFlags f)
{
d->m_flags = f;
}
diff --git a/sources/shiboken6_generator/ApiExtractor/abstractmetafunction.h b/sources/shiboken6_generator/ApiExtractor/abstractmetafunction.h
index 63a5f9c14..ae3258d3c 100644
--- a/sources/shiboken6_generator/ApiExtractor/abstractmetafunction.h
+++ b/sources/shiboken6_generator/ApiExtractor/abstractmetafunction.h
@@ -120,20 +120,9 @@ public:
void setCppAttributes(FunctionAttributes a);
void setCppAttribute(FunctionAttribute a, bool on = true);
- enum class Flag : std::uint8_t { // Internal flags not relevant for comparing functions
- // Binary operator whose leading/trailing argument was removed by metabuilder
- OperatorLeadingClassArgumentRemoved = 0x1,
- OperatorTrailingClassArgumentRemoved = 0x2,
- OperatorClassArgumentByValue = 0x4, // The removed class argument was passed by value
- InheritedFromTemplate = 0x8, // Inherited from a template in metabuilder
- HiddenFriend = 0x10,
- PrivateSignal = 0x20, // Private Qt signal (cannot emit from client code)
- CovariantReturn = 0x40 // Return type of virtual function differs (eg clone())
- };
- Q_DECLARE_FLAGS(Flags, Flag)
-
- Flags flags() const;
- void setFlags(Flags f);
+ // Internal flags not relevant for comparing functions
+ InternalFunctionFlags flags() const;
+ void setFlags(InternalFunctionFlags f);
bool isAbstract() const;
bool isClassMethod() const;
@@ -487,8 +476,6 @@ Q_DECLARE_OPERATORS_FOR_FLAGS(AbstractMetaFunction::CompareResult);
Q_DECLARE_OPERATORS_FOR_FLAGS(AbstractMetaFunction::Attributes);
-Q_DECLARE_OPERATORS_FOR_FLAGS(AbstractMetaFunction::Flags);
-
#ifndef QT_NO_DEBUG_STREAM
QDebug operator<<(QDebug debug, const AbstractMetaFunction *af);
#endif
diff --git a/sources/shiboken6_generator/ApiExtractor/abstractmetalang.cpp b/sources/shiboken6_generator/ApiExtractor/abstractmetalang.cpp
index e88f354bb..9c3463a64 100644
--- a/sources/shiboken6_generator/ApiExtractor/abstractmetalang.cpp
+++ b/sources/shiboken6_generator/ApiExtractor/abstractmetalang.cpp
@@ -1593,9 +1593,9 @@ void AbstractMetaClass::fixFunctions(const AbstractMetaClassPtr &klass, bool avo
if (superIsVirtual && isVirtual) {
f->setOverriddden(sf);
auto flags = f->flags();
- if (!flags.testFlag(AbstractMetaFunction::Flag::CovariantReturn)
+ if (!flags.testFlag(InternalFunctionFlag::CovariantReturn)
&& f->type() != sf->type()) {
- f->setFlags(flags | AbstractMetaFunction::Flag::CovariantReturn);
+ f->setFlags(flags | InternalFunctionFlag::CovariantReturn);
}
// Set "override" in case it was not spelled out (since it
// is then not detected by clang parsing).
diff --git a/sources/shiboken6_generator/ApiExtractor/abstractmetalang_enums.h b/sources/shiboken6_generator/ApiExtractor/abstractmetalang_enums.h
index b7f113795..c8b63c686 100644
--- a/sources/shiboken6_generator/ApiExtractor/abstractmetalang_enums.h
+++ b/sources/shiboken6_generator/ApiExtractor/abstractmetalang_enums.h
@@ -50,4 +50,21 @@ enum class OperatorQueryOption : std::uint16_t {
Q_DECLARE_FLAGS(OperatorQueryOptions, OperatorQueryOption)
Q_DECLARE_OPERATORS_FOR_FLAGS(OperatorQueryOptions)
+// Internal flags of AbstractMetaFunction not relevant for comparing functions
+enum class InternalFunctionFlag : std::uint16_t
+{
+ // Binary operator whose leading/trailing argument was removed by metabuilder
+ OperatorLeadingClassArgumentRemoved = 0x001,
+ OperatorTrailingClassArgumentRemoved = 0x002,
+ OperatorClassArgumentByValue = 0x004, // The removed class argument was passed by value
+ OperatorMask = 0x01F,
+ InheritedFromTemplate = 0x020, // Inherited from a template in metabuilder
+ HiddenFriend = 0x040,
+ PrivateSignal = 0x080, // Private Qt signal (cannot emit from client code)
+ CovariantReturn = 0x100, // Return type of virtual function differs (eg clone())
+};
+
+Q_DECLARE_FLAGS(InternalFunctionFlags, InternalFunctionFlag)
+Q_DECLARE_OPERATORS_FOR_FLAGS(InternalFunctionFlags)
+
#endif // ABSTRACTMETALANG_ENUMS_H
diff --git a/sources/shiboken6_generator/ApiExtractor/messages.cpp b/sources/shiboken6_generator/ApiExtractor/messages.cpp
index ea69c0519..819ba5fac 100644
--- a/sources/shiboken6_generator/ApiExtractor/messages.cpp
+++ b/sources/shiboken6_generator/ApiExtractor/messages.cpp
@@ -646,9 +646,9 @@ QString msgFallbackForDocumentation(const QString &fileName,
static QString functionDescription(const AbstractMetaFunction *function)
{
QString result = u'"' + function->classQualifiedSignature() + u'"';
- if (function->flags().testFlag(AbstractMetaFunction::Flag::HiddenFriend))
+ if (function->flags().testFlag(InternalFunctionFlag::HiddenFriend))
result += u" (hidden friend)"_s;
- if (function->flags().testFlag(AbstractMetaFunction::Flag::InheritedFromTemplate))
+ if (function->flags().testFlag(InternalFunctionFlag::InheritedFromTemplate))
result += u" (inherited from template)"_s;
return result;
}
diff --git a/sources/shiboken6_generator/ApiExtractor/qtdocparser.cpp b/sources/shiboken6_generator/ApiExtractor/qtdocparser.cpp
index 6b9f1b0e4..b283f0159 100644
--- a/sources/shiboken6_generator/ApiExtractor/qtdocparser.cpp
+++ b/sources/shiboken6_generator/ApiExtractor/qtdocparser.cpp
@@ -205,14 +205,14 @@ QtDocParser::FunctionDocumentationOpt
const auto funcFlags = func->flags();
// Re-add arguments removed by the metabuilder to binary operator functions
- if (funcFlags.testFlag(AbstractMetaFunction::Flag::OperatorLeadingClassArgumentRemoved)
- || funcFlags.testFlag(AbstractMetaFunction::Flag::OperatorTrailingClassArgumentRemoved)) {
+ if (funcFlags.testFlag(InternalFunctionFlag::OperatorLeadingClassArgumentRemoved)
+ || funcFlags.testFlag(InternalFunctionFlag::OperatorTrailingClassArgumentRemoved)) {
QString classType = metaClass->qualifiedCppName();
- if (!funcFlags.testFlag(AbstractMetaFunction::Flag::OperatorClassArgumentByValue)) {
+ if (!funcFlags.testFlag(InternalFunctionFlag::OperatorClassArgumentByValue)) {
classType.prepend(u"const "_s);
classType.append(u" &"_s);
}
- if (funcFlags.testFlag(AbstractMetaFunction::Flag::OperatorLeadingClassArgumentRemoved))
+ if (funcFlags.testFlag(InternalFunctionFlag::OperatorLeadingClassArgumentRemoved))
fq.parameters.prepend(classType);
else
fq.parameters.append(classType);