diff options
Diffstat (limited to 'sources')
-rw-r--r-- | sources/shiboken6/ApiExtractor/parser/codemodel.cpp | 17 | ||||
-rw-r--r-- | sources/shiboken6/ApiExtractor/parser/codemodel.h | 5 |
2 files changed, 22 insertions, 0 deletions
diff --git a/sources/shiboken6/ApiExtractor/parser/codemodel.cpp b/sources/shiboken6/ApiExtractor/parser/codemodel.cpp index 7d3b9aa83..d1f3e552b 100644 --- a/sources/shiboken6/ApiExtractor/parser/codemodel.cpp +++ b/sources/shiboken6/ApiExtractor/parser/codemodel.cpp @@ -256,6 +256,16 @@ SourceLocation _CodeModelItem::sourceLocation() const return SourceLocation(m_fileName, m_startLine); } +const _ScopeModelItem *_CodeModelItem::enclosingScope() const +{ + return m_enclosingScope; +} + +void _CodeModelItem::setEnclosingScope(const _ScopeModelItem *s) +{ + m_enclosingScope = s; +} + #ifndef QT_NO_DEBUG_STREAM template <class It> void formatSequence(QDebug &d, It i1, It i2, const char *separator=", ") @@ -484,26 +494,31 @@ void _ScopeModelItem::addEnumsDeclaration(const QString &enumsDeclaration) void _ScopeModelItem::addClass(const ClassModelItem &item) { m_classes.append(item); + item->setEnclosingScope(this); } void _ScopeModelItem::addFunction(const FunctionModelItem &item) { m_functions.append(item); + item->setEnclosingScope(this); } void _ScopeModelItem::addVariable(const VariableModelItem &item) { m_variables.append(item); + item->setEnclosingScope(this); } void _ScopeModelItem::addTypeDef(const TypeDefModelItem &item) { m_typeDefs.append(item); + item->setEnclosingScope(this); } void _ScopeModelItem::addTemplateTypeAlias(const TemplateTypeAliasModelItem &item) { m_templateTypeAliases.append(item); + item->setEnclosingScope(this); } qsizetype _ScopeModelItem::indexOfEnum(const QString &name) const @@ -517,6 +532,7 @@ qsizetype _ScopeModelItem::indexOfEnum(const QString &name) const void _ScopeModelItem::addEnum(const EnumModelItem &item) { + item->setEnclosingScope(this); // A forward declaration of an enum ("enum class Foo;") is undistinguishable // from an enum without values ("enum class QCborTag {}"), so, add all // enums and replace existing ones without values by ones with values. @@ -701,6 +717,7 @@ _NamespaceModelItem::~_NamespaceModelItem() void _NamespaceModelItem::addNamespace(NamespaceModelItem item) { + item->setEnclosingScope(this); m_namespaces.append(item); } diff --git a/sources/shiboken6/ApiExtractor/parser/codemodel.h b/sources/shiboken6/ApiExtractor/parser/codemodel.h index 6527ab7bb..db3675d17 100644 --- a/sources/shiboken6/ApiExtractor/parser/codemodel.h +++ b/sources/shiboken6/ApiExtractor/parser/codemodel.h @@ -42,6 +42,7 @@ #include <QtCore/QString> #include <QtCore/QStringList> #include <QtCore/QList> +#include <QtCore/QWeakPointer> #include <optional> @@ -167,6 +168,9 @@ public: inline CodeModel *model() const { return m_model; } + const _ScopeModelItem *enclosingScope() const; + void setEnclosingScope(const _ScopeModelItem *s); + #ifndef QT_NO_DEBUG_STREAM static void formatKind(QDebug &d, int k); virtual void formatDebug(QDebug &d) const; @@ -178,6 +182,7 @@ protected: private: CodeModel *m_model; + const _ScopeModelItem *m_enclosingScope = nullptr; int m_kind; int m_startLine; int m_startColumn; |