aboutsummaryrefslogtreecommitdiffstats
path: root/sources/shiboken6/ApiExtractor/abstractmetafield.cpp
diff options
context:
space:
mode:
authorFriedemann Kleint <Friedemann.Kleint@qt.io>2020-12-01 15:23:20 +0100
committerFriedemann Kleint <Friedemann.Kleint@qt.io>2020-12-02 06:38:03 +0000
commitbfacabede1f9cb7dc1747879b310c4855b65bccf (patch)
tree1c73bf7861437d4515d80a8d0728035754560ffe /sources/shiboken6/ApiExtractor/abstractmetafield.cpp
parentf379fe417a31981cf923930cae8799dc775a9b5f (diff)
shiboken6: Fix field modifications
The logic was only partially present, neither removal of getter/setter nor renaming had any effect. Rewrite the code to resemble that of AbstractMetaFunction (adding function applyFieldModifications()) Move some check functions from the generators to AbstractMetaField/Type. Add tests in libsample. Change-Id: Ib29d4e37db51f122b46702cb5d96b13da6d0f224 Reviewed-by: Christian Tismer <tismer@stackless.com>
Diffstat (limited to 'sources/shiboken6/ApiExtractor/abstractmetafield.cpp')
-rw-r--r--sources/shiboken6/ApiExtractor/abstractmetafield.cpp52
1 files changed, 40 insertions, 12 deletions
diff --git a/sources/shiboken6/ApiExtractor/abstractmetafield.cpp b/sources/shiboken6/ApiExtractor/abstractmetafield.cpp
index 841266a37..fa7ab64d9 100644
--- a/sources/shiboken6/ApiExtractor/abstractmetafield.cpp
+++ b/sources/shiboken6/ApiExtractor/abstractmetafield.cpp
@@ -41,8 +41,9 @@ public:
QString m_originalName;
QString m_name;
AbstractMetaType m_type;
- bool m_hasName = false;
Documentation m_doc;
+ bool m_setterEnabled = true; // Modifications
+ bool m_getterEnabled = true; // Modifications
};
AbstractMetaField::AbstractMetaField() : d(new AbstractMetaFieldData)
@@ -101,27 +102,21 @@ QString AbstractMetaField::name() const
return d->m_name;
}
-void AbstractMetaField::setName(const QString &name, bool realName)
+void AbstractMetaField::setName(const QString &name)
{
- if (d->m_name != name || d->m_hasName != realName) {
+ if (d->m_name != name)
d->m_name = name;
- d->m_hasName = realName;
- }
-}
-
-bool AbstractMetaField::hasName() const
-{
- return d->m_hasName;
}
QString AbstractMetaField::qualifiedCppName() const
{
- return enclosingClass()->qualifiedCppName() + QLatin1String("::") + d->m_name;
+ return enclosingClass()->qualifiedCppName() + QLatin1String("::")
+ + originalName();
}
QString AbstractMetaField::originalName() const
{
- return d->m_originalName;
+ return d->m_originalName.isEmpty() ? d->m_name : d->m_originalName;
}
void AbstractMetaField::setOriginalName(const QString &name)
@@ -141,6 +136,39 @@ void AbstractMetaField::setDocumentation(const Documentation &doc)
d->m_doc = doc;
}
+bool AbstractMetaField::isGetterEnabled() const
+{
+ return d->m_getterEnabled;
+}
+
+void AbstractMetaField::setGetterEnabled(bool e)
+{
+ if (d->m_getterEnabled != e)
+ d->m_getterEnabled = e;
+}
+
+bool AbstractMetaField::isSetterEnabled() const
+{
+ return d->m_setterEnabled;
+}
+
+void AbstractMetaField::setSetterEnabled(bool e)
+{
+ if (e != d->m_setterEnabled)
+ d->m_setterEnabled = e;
+}
+
+bool AbstractMetaField::canGenerateGetter() const
+{
+ return d->m_getterEnabled && !isStatic();
+}
+
+bool AbstractMetaField::canGenerateSetter() const
+{
+ return d->m_setterEnabled && !isStatic()
+ && (!d->m_type.isConstant() || d->m_type.isPointerToConst());
+}
+
FieldModificationList AbstractMetaField::modifications() const
{
const FieldModificationList &mods = enclosingClass()->typeEntry()->fieldModifications();