diff options
Diffstat (limited to 'sources/shiboken2/ApiExtractor/parser/codemodel.h')
-rw-r--r-- | sources/shiboken2/ApiExtractor/parser/codemodel.h | 49 |
1 files changed, 48 insertions, 1 deletions
diff --git a/sources/shiboken2/ApiExtractor/parser/codemodel.h b/sources/shiboken2/ApiExtractor/parser/codemodel.h index 80db2cce5..13bc7cf36 100644 --- a/sources/shiboken2/ApiExtractor/parser/codemodel.h +++ b/sources/shiboken2/ApiExtractor/parser/codemodel.h @@ -47,6 +47,8 @@ QT_FORWARD_DECLARE_CLASS(QDebug) #define DECLARE_MODEL_NODE(k) \ enum { __node_kind = Kind_##k }; +class SourceLocation; + class CodeModel { public: @@ -202,6 +204,8 @@ public: static TypeInfo combine(const TypeInfo &__lhs, const TypeInfo &__rhs); static TypeInfo resolveType(TypeInfo const &__type, const ScopeModelItem &__scope); + void formatTypeSystemSignature(QTextStream &str) const; + #ifndef QT_NO_DEBUG_STREAM void formatDebug(QDebug &d) const; #endif @@ -265,7 +269,8 @@ public: Kind_File = 5 << FirstKind | Kind_Namespace, Kind_TemplateParameter = 7 << FirstKind, Kind_TypeDef = 8 << FirstKind, - Kind_Variable = 9 << FirstKind | Kind_Member + Kind_TemplateTypeAlias = 9 << FirstKind, + Kind_Variable = 10 << FirstKind | Kind_Member }; public: @@ -293,6 +298,8 @@ public: void getEndPosition(int *line, int *column); void setEndPosition(int line, int column); + SourceLocation sourceLocation() const; + inline CodeModel *model() const { return m_model; } #ifndef QT_NO_DEBUG_STREAM @@ -331,18 +338,21 @@ public: EnumList enums() const { return m_enums; } inline FunctionList functions() const { return m_functions; } TypeDefList typeDefs() const { return m_typeDefs; } + TemplateTypeAliasList templateTypeAliases() const { return m_templateTypeAliases; } VariableList variables() const { return m_variables; } void addClass(const ClassModelItem &item); void addEnum(const EnumModelItem &item); void addFunction(const FunctionModelItem &item); void addTypeDef(const TypeDefModelItem &item); + void addTemplateTypeAlias(const TemplateTypeAliasModelItem &item); void addVariable(const VariableModelItem &item); ClassModelItem findClass(const QString &name) const; EnumModelItem findEnum(const QString &name) const; FunctionList findFunctions(const QString &name) const; TypeDefModelItem findTypeDef(const QString &name) const; + TemplateTypeAliasModelItem findTemplateTypeAlias(const QString &name) const; VariableModelItem findVariable(const QString &name) const; void addEnumsDeclaration(const QString &enumsDeclaration); @@ -350,6 +360,9 @@ public: FunctionModelItem declaredFunction(const FunctionModelItem &item); + bool isEmpty() const; + void purgeClassDeclarations(); + #ifndef QT_NO_DEBUG_STREAM void formatDebug(QDebug &d) const override; #endif @@ -370,6 +383,7 @@ private: ClassList m_classes; EnumList m_enums; TypeDefList m_typeDefs; + TemplateTypeAliasList m_templateTypeAliases; VariableList m_variables; FunctionList m_functions; @@ -412,6 +426,9 @@ public: bool isFinal() const { return m_final; } void setFinal(bool f) { m_final = f; } + bool isEmpty() const; + bool isTemplate() const; + #ifndef QT_NO_DEBUG_STREAM void formatDebug(QDebug &d) const override; #endif @@ -438,6 +455,9 @@ public: const NamespaceList &namespaces() const { return m_namespaces; } + NamespaceType type() const { return m_type; } + void setType(NamespaceType t) { m_type = t; } + void addNamespace(NamespaceModelItem item); NamespaceModelItem findNamespace(const QString &name) const; @@ -450,6 +470,7 @@ public: private: NamespaceList m_namespaces; + NamespaceType m_type = NamespaceType::Default; }; class _FileModelItem: public _NamespaceModelItem @@ -618,6 +639,8 @@ public: ExceptionSpecification exceptionSpecification() const; void setExceptionSpecification(ExceptionSpecification e); + QString typeSystemSignature() const; // For dumping out type system files + #ifndef QT_NO_DEBUG_STREAM void formatDebug(QDebug &d) const override; #endif @@ -675,6 +698,30 @@ private: TypeInfo m_type; }; +class _TemplateTypeAliasModelItem : public _CodeModelItem +{ +public: + DECLARE_MODEL_NODE(TemplateTypeAlias) + + explicit _TemplateTypeAliasModelItem(CodeModel *model, int kind = __node_kind); + explicit _TemplateTypeAliasModelItem(CodeModel *model, const QString &name, + int kind = __node_kind); + + TemplateParameterList templateParameters() const; + void addTemplateParameter(const TemplateParameterModelItem &templateParameter); + + TypeInfo type() const; + void setType(const TypeInfo &type); + +#ifndef QT_NO_DEBUG_STREAM + void formatDebug(QDebug &d) const override; +#endif + +private: + TemplateParameterList m_templateParameters; + TypeInfo m_type; +}; + class _EnumModelItem: public _CodeModelItem { public: |