aboutsummaryrefslogtreecommitdiffstats
path: root/sources/shiboken2/ApiExtractor/parser/codemodel.h
diff options
context:
space:
mode:
Diffstat (limited to 'sources/shiboken2/ApiExtractor/parser/codemodel.h')
-rw-r--r--sources/shiboken2/ApiExtractor/parser/codemodel.h49
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: