aboutsummaryrefslogtreecommitdiffstats
path: root/sources/shiboken6/ApiExtractor/abstractmetafield.cpp
diff options
context:
space:
mode:
authorFriedemann Kleint <Friedemann.Kleint@qt.io>2020-11-30 18:39:25 +0100
committerFriedemann Kleint <Friedemann.Kleint@qt.io>2020-12-07 12:31:15 +0000
commited87e710dd14bc9612dcfdba2e09143201768556 (patch)
tree0c7dd4b49e4a891c57d514fca39642abfaad91f6 /sources/shiboken6/ApiExtractor/abstractmetafield.cpp
parenteb16797b9a54970dbc0c461ebeddda57b060af22 (diff)
shiboken6: Add support for a snake case typesystem attribute
Add a snake case attribute to type system, complex type entry, function type entry as well as to function and field modifications. Add a function definitionNames() to AbstractMetaFunction/Field returning the names under which the function/field will be registered. Change the code writing the registration accordingly. Fixes: PYSIDE-1441 Change-Id: I178390bb80fa25aad9f8a56e99e4cc70064178eb Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io>
Diffstat (limited to 'sources/shiboken6/ApiExtractor/abstractmetafield.cpp')
-rw-r--r--sources/shiboken6/ApiExtractor/abstractmetafield.cpp23
1 files changed, 23 insertions, 0 deletions
diff --git a/sources/shiboken6/ApiExtractor/abstractmetafield.cpp b/sources/shiboken6/ApiExtractor/abstractmetafield.cpp
index 3c294c3c7..23c21d2a5 100644
--- a/sources/shiboken6/ApiExtractor/abstractmetafield.cpp
+++ b/sources/shiboken6/ApiExtractor/abstractmetafield.cpp
@@ -27,6 +27,7 @@
****************************************************************************/
#include "abstractmetafield.h"
+#include "abstractmetabuilder.h"
#include "abstractmetalang.h"
#include "abstractmetatype.h"
#include "documentation.h"
@@ -111,6 +112,11 @@ QString AbstractMetaField::qualifiedCppName() const
+ originalName();
}
+QStringList AbstractMetaField::definitionNames() const
+{
+ return AbstractMetaBuilder::definitionNames(d->m_name, snakeCase());
+}
+
QString AbstractMetaField::originalName() const
{
return d->m_originalName.isEmpty() ? d->m_name : d->m_originalName;
@@ -166,6 +172,23 @@ bool AbstractMetaField::canGenerateSetter() const
&& (!d->m_type.isConstant() || d->m_type.isPointerToConst());
}
+TypeSystem::SnakeCase AbstractMetaField::snakeCase() const
+{
+ // Renamed?
+ if (!d->m_originalName.isEmpty() && d->m_originalName != d->m_name)
+ return TypeSystem::SnakeCase::Disabled;
+
+ for (const auto &mod : modifications()) {
+ if (mod.snakeCase() != TypeSystem::SnakeCase::Unspecified)
+ return mod.snakeCase();
+ }
+
+ auto typeEntry = enclosingClass()->typeEntry();
+ const auto snakeCase = typeEntry->snakeCase();
+ return snakeCase != TypeSystem::SnakeCase::Unspecified
+ ? snakeCase : typeEntry->typeSystemTypeEntry()->snakeCase();
+}
+
FieldModificationList AbstractMetaField::modifications() const
{
const FieldModificationList &mods = enclosingClass()->typeEntry()->fieldModifications();