diff options
author | Friedemann Kleint <Friedemann.Kleint@qt.io> | 2017-12-01 11:05:28 +0100 |
---|---|---|
committer | Friedemann Kleint <Friedemann.Kleint@qt.io> | 2017-12-01 13:54:29 +0000 |
commit | 4462db523fd8afc4177ad58caf1d5a955373bad5 (patch) | |
tree | 6ab2dae1247041d1dbcb1e05ac5de5eed3270082 | |
parent | d9aefad1942239e587698d1fa9213a881f6d19be (diff) |
shiboken/Clang parser: Add information about override/final
Change-Id: I0f1bad0567ae928d4117e7785e7788d9efd551c2
Reviewed-by: Christian Tismer <tismer@stackless.com>
-rw-r--r-- | sources/shiboken2/ApiExtractor/clangparser/clangbuilder.cpp | 10 | ||||
-rw-r--r-- | sources/shiboken2/ApiExtractor/parser/codemodel.cpp | 29 | ||||
-rw-r--r-- | sources/shiboken2/ApiExtractor/parser/codemodel.h | 12 |
3 files changed, 51 insertions, 0 deletions
diff --git a/sources/shiboken2/ApiExtractor/clangparser/clangbuilder.cpp b/sources/shiboken2/ApiExtractor/clangparser/clangbuilder.cpp index 73b1638ef..171adc2d6 100644 --- a/sources/shiboken2/ApiExtractor/clangparser/clangbuilder.cpp +++ b/sources/shiboken2/ApiExtractor/clangparser/clangbuilder.cpp @@ -773,6 +773,16 @@ BaseVisitor::StartTokenResult Builder::startToken(const CXCursor &cursor) d->qualifyTypeDef(cursor, d->m_currentField); } break; + case CXCursor_CXXFinalAttr: + if (!d->m_currentFunction.isNull()) + d->m_currentFunction->setFinal(true); + else if (!d->m_currentClass.isNull()) + d->m_currentClass->setFinal(true); + break; + case CXCursor_CXXOverrideAttr: + if (!d->m_currentFunction.isNull()) + d->m_currentFunction->setOverride(true); + break; default: break; } diff --git a/sources/shiboken2/ApiExtractor/parser/codemodel.cpp b/sources/shiboken2/ApiExtractor/parser/codemodel.cpp index 7c3bbbede..a35ca314b 100644 --- a/sources/shiboken2/ApiExtractor/parser/codemodel.cpp +++ b/sources/shiboken2/ApiExtractor/parser/codemodel.cpp @@ -576,6 +576,9 @@ void _ClassModelItem::formatDebug(QDebug &d) const { _CodeModelItem::formatDebug(d); if (!m_baseClasses.isEmpty()) { + if (m_final) + d << " [final]"; + d << ", inherits="; d << ", inherits="; for (int i = 0, size = m_baseClasses.size(); i < size; ++i) { if (i) @@ -886,6 +889,26 @@ bool _FunctionModelItem::isInline() const return m_isInline; } +bool _FunctionModelItem::isOverride() const +{ + return m_isOverride; +} + +void _FunctionModelItem::setOverride(bool o) +{ + m_isOverride = o; +} + +bool _FunctionModelItem::isFinal() const +{ + return m_isFinal; +} + +void _FunctionModelItem::setFinal(bool f) +{ + m_isFinal = f; +} + void _FunctionModelItem::setInline(bool isInline) { m_isInline = isInline; @@ -929,6 +952,12 @@ void _FunctionModelItem::formatDebug(QDebug &d) const d << ", type=" << m_functionType; if (m_isInline) d << " [inline]"; + if (m_isVirtual) + d << " [virtual]"; + if (m_isOverride) + d << " [override]"; + if (m_isFinal) + d << " [final]"; if (m_isAbstract) d << " [abstract]"; if (m_isExplicit) diff --git a/sources/shiboken2/ApiExtractor/parser/codemodel.h b/sources/shiboken2/ApiExtractor/parser/codemodel.h index fd17b442c..2aaea1f78 100644 --- a/sources/shiboken2/ApiExtractor/parser/codemodel.h +++ b/sources/shiboken2/ApiExtractor/parser/codemodel.h @@ -376,6 +376,9 @@ public: void addPropertyDeclaration(const QString &propertyDeclaration); QStringList propertyDeclarations() const { return m_propertyDeclarations; } + bool isFinal() const { return m_final; } + void setFinal(bool f) { m_final = f; } + #ifndef QT_NO_DEBUG_STREAM void formatDebug(QDebug &d) const override; #endif @@ -386,6 +389,7 @@ private: CodeModel::ClassType m_classType; QStringList m_propertyDeclarations; + bool m_final = false; }; class _NamespaceModelItem: public _ScopeModelItem @@ -545,6 +549,12 @@ public: bool isVirtual() const; void setVirtual(bool isVirtual); + bool isOverride() const; + void setOverride(bool o); + + bool isFinal() const; + void setFinal(bool f); + bool isInline() const; void setInline(bool isInline); @@ -572,6 +582,8 @@ private: union { struct { uint m_isVirtual: 1; + uint m_isOverride: 1; + uint m_isFinal: 1; uint m_isInline: 1; uint m_isAbstract: 1; uint m_isExplicit: 1; |