diff options
| author | Friedemann Kleint <Friedemann.Kleint@qt.io> | 2020-11-30 18:39:25 +0100 |
|---|---|---|
| committer | Friedemann Kleint <Friedemann.Kleint@qt.io> | 2020-12-07 12:31:15 +0000 |
| commit | ed87e710dd14bc9612dcfdba2e09143201768556 (patch) | |
| tree | 0c7dd4b49e4a891c57d514fca39642abfaad91f6 /sources/shiboken6/ApiExtractor/abstractmetafield.cpp | |
| parent | eb16797b9a54970dbc0c461ebeddda57b060af22 (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.cpp | 23 |
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(); |
