diff options
| author | Friedemann Kleint <Friedemann.Kleint@qt.io> | 2024-02-27 13:13:41 +0100 |
|---|---|---|
| committer | Friedemann Kleint <Friedemann.Kleint@qt.io> | 2024-04-17 13:12:14 +0200 |
| commit | 8d5b1bdf238cda67a50e489a77de1f4f6996b3b2 (patch) | |
| tree | 2e232a691adf7b1f36f348a33d5bdd9ad4d0b825 /sources/shiboken6/ApiExtractor/clangparser/clangbuilder.cpp | |
| parent | 5b8ce393310ed9b6ffa4b0add29d1bb164e37baa (diff) | |
shiboken6: Extract common C++ function attributes
Extract attributes common to C++ functions from
AbstractMetaFunction's attributes to a flags type in
codemodel_enums.h for re-use in AbstractMetaFunction,
FunctionModelItem and AddedFunction.
A lot of boolean setters and getters can then be removed and
the flags easily transferred from code model to the meta
language code.
Task-number: PYSIDE-2602
Pick-to: 6.7
Change-Id: I9da1bb0d70051cd6bb3113290e8ccedfe4d13908
Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io>
Diffstat (limited to 'sources/shiboken6/ApiExtractor/clangparser/clangbuilder.cpp')
| -rw-r--r-- | sources/shiboken6/ApiExtractor/clangparser/clangbuilder.cpp | 15 |
1 files changed, 8 insertions, 7 deletions
diff --git a/sources/shiboken6/ApiExtractor/clangparser/clangbuilder.cpp b/sources/shiboken6/ApiExtractor/clangparser/clangbuilder.cpp index 47ac2e962..31e7efb05 100644 --- a/sources/shiboken6/ApiExtractor/clangparser/clangbuilder.cpp +++ b/sources/shiboken6/ApiExtractor/clangparser/clangbuilder.cpp @@ -346,7 +346,7 @@ FunctionModelItem BuilderPrivate::createFunction(const CXCursor &cursor, case CXAvailability_Available: break; case CXAvailability_Deprecated: - result->setDeprecated(true); + result->setAttribute(FunctionAttribute::Deprecated); break; case CXAvailability_NotAvailable: // "Foo(const Foo&) = delete;" result->setDeleted(true); @@ -389,9 +389,9 @@ FunctionModelItem BuilderPrivate::createMemberFunction(const CXCursor &cursor, auto result = createFunction(cursor, functionType, isTemplateCode); result->setAccessPolicy(accessPolicy(clang_getCXXAccessSpecifier(cursor))); result->setConstant(clang_CXXMethod_isConst(cursor) != 0); - result->setStatic(clang_CXXMethod_isStatic(cursor) != 0); - result->setVirtual(clang_CXXMethod_isVirtual(cursor) != 0); - result->setAbstract(clang_CXXMethod_isPureVirtual(cursor) != 0); + result->setAttribute(FunctionAttribute::Static, clang_CXXMethod_isStatic(cursor) != 0); + result->setAttribute(FunctionAttribute::Virtual, clang_CXXMethod_isVirtual(cursor) != 0); + result->setAttribute(FunctionAttribute::Abstract, clang_CXXMethod_isPureVirtual(cursor) != 0); return result; } @@ -407,7 +407,8 @@ void BuilderPrivate::qualifyConstructor(const CXCursor &cursor) && m_currentFunction->arguments().size() == 1 && clang_CXXConstructor_isCopyConstructor(cursor) == 0 && clang_CXXConstructor_isMoveConstructor(cursor) == 0) { - m_currentFunction->setExplicit(clang_CXXConstructor_isConvertingConstructor(cursor) == 0); + m_currentFunction->setAttribute(FunctionAttribute::Explicit, + clang_CXXConstructor_isConvertingConstructor(cursor) == 0); } } @@ -1182,13 +1183,13 @@ BaseVisitor::StartTokenResult Builder::startToken(const CXCursor &cursor) break; case CXCursor_CXXFinalAttr: if (d->m_currentFunction) - d->m_currentFunction->setFinal(true); + d->m_currentFunction->setAttribute(FunctionAttribute::Final); else if (d->m_currentClass) d->m_currentClass->setFinal(true); break; case CXCursor_CXXOverrideAttr: if (d->m_currentFunction) - d->m_currentFunction->setOverride(true); + d->m_currentFunction->setAttribute(FunctionAttribute::Override); break; case CXCursor_StaticAssert: // Check for Q_PROPERTY() (see PySide6/global.h.in for an explanation |
