aboutsummaryrefslogtreecommitdiffstats
path: root/sources/shiboken2/ApiExtractor/typesystem.h
diff options
context:
space:
mode:
Diffstat (limited to 'sources/shiboken2/ApiExtractor/typesystem.h')
-rw-r--r--sources/shiboken2/ApiExtractor/typesystem.h63
1 files changed, 45 insertions, 18 deletions
diff --git a/sources/shiboken2/ApiExtractor/typesystem.h b/sources/shiboken2/ApiExtractor/typesystem.h
index b55d5dac5..6d7a9d450 100644
--- a/sources/shiboken2/ApiExtractor/typesystem.h
+++ b/sources/shiboken2/ApiExtractor/typesystem.h
@@ -543,6 +543,7 @@ private:
};
class CustomConversion;
+class TypeSystemTypeEntry;
class TypeEntry
{
@@ -591,7 +592,8 @@ public:
};
Q_ENUM(CodeGeneration)
- explicit TypeEntry(const QString &name, Type t, const QVersionNumber &vr);
+ explicit TypeEntry(const QString &name, Type t, const QVersionNumber &vr,
+ const TypeEntry *parent);
virtual ~TypeEntry();
@@ -599,6 +601,11 @@ public:
{
return m_type;
}
+
+ const TypeEntry *parent() const { return m_parent; }
+ void setParent(const TypeEntry *p) { m_parent = p; }
+ const TypeSystemTypeEntry *typeSystemTypeEntry() const;
+
bool isPrimitive() const
{
return m_type == PrimitiveType;
@@ -899,6 +906,7 @@ protected:
TypeEntry(const TypeEntry &);
private:
+ const TypeEntry *m_parent;
QString m_name;
QString m_targetLangPackage;
CustomFunction m_customConstructor;
@@ -920,7 +928,8 @@ private:
class TypeSystemTypeEntry : public TypeEntry
{
public:
- explicit TypeSystemTypeEntry(const QString &name, const QVersionNumber &vr);
+ explicit TypeSystemTypeEntry(const QString &name, const QVersionNumber &vr,
+ const TypeEntry *parent);
TypeEntry *clone() const override;
@@ -953,7 +962,8 @@ protected:
class TemplateArgumentEntry : public TypeEntry
{
public:
- explicit TemplateArgumentEntry(const QString &name, const QVersionNumber &vr);
+ explicit TemplateArgumentEntry(const QString &name, const QVersionNumber &vr,
+ const TypeEntry *parent);
int ordinal() const
{
@@ -976,7 +986,8 @@ private:
class ArrayTypeEntry : public TypeEntry
{
public:
- explicit ArrayTypeEntry(const TypeEntry *nested_type, const QVersionNumber &vr);
+ explicit ArrayTypeEntry(const TypeEntry *nested_type, const QVersionNumber &vr,
+ const TypeEntry *parent);
void setNestedTypeEntry(TypeEntry *nested)
{
@@ -1003,7 +1014,8 @@ private:
class PrimitiveTypeEntry : public TypeEntry
{
public:
- explicit PrimitiveTypeEntry(const QString &name, const QVersionNumber &vr);
+ explicit PrimitiveTypeEntry(const QString &name, const QVersionNumber &vr,
+ const TypeEntry *parent);
QString targetLangName() const override;
void setTargetLangName(const QString &targetLangName)
@@ -1083,7 +1095,8 @@ class EnumTypeEntry : public TypeEntry
{
public:
explicit EnumTypeEntry(const QString &nspace, const QString &enumName,
- const QVersionNumber &vr);
+ const QVersionNumber &vr,
+ const TypeEntry *parent);
QString targetLangName() const override;
QString targetLangQualifier() const;
@@ -1149,7 +1162,10 @@ private:
class EnumValueTypeEntry : public TypeEntry
{
public:
- explicit EnumValueTypeEntry(const QString& name, const QString& value, const EnumTypeEntry* enclosingEnum, const QVersionNumber &vr);
+ explicit EnumValueTypeEntry(const QString& name, const QString& value,
+ const EnumTypeEntry* enclosingEnum,
+ const QVersionNumber &vr,
+ const TypeEntry *parent);
QString value() const { return m_value; }
const EnumTypeEntry* enclosingEnum() const { return m_enclosingEnum; }
@@ -1167,7 +1183,8 @@ private:
class FlagsTypeEntry : public TypeEntry
{
public:
- explicit FlagsTypeEntry(const QString &name, const QVersionNumber &vr);
+ explicit FlagsTypeEntry(const QString &name, const QVersionNumber &vr,
+ const TypeEntry *parent);
QString qualifiedTargetLangName() const override;
QString targetLangName() const override;
@@ -1226,7 +1243,8 @@ public:
Unknown
};
- explicit ComplexTypeEntry(const QString &name, Type t, const QVersionNumber &vr);
+ explicit ComplexTypeEntry(const QString &name, Type t, const QVersionNumber &vr,
+ const TypeEntry *parent);
bool isComplex() const override;
@@ -1427,7 +1445,8 @@ class TypedefEntry : public ComplexTypeEntry
public:
explicit TypedefEntry(const QString &name,
const QString &sourceType,
- const QVersionNumber &vr);
+ const QVersionNumber &vr,
+ const TypeEntry *parent);
QString sourceType() const { return m_sourceType; }
void setSourceType(const QString &s) { m_sourceType =s; }
@@ -1473,7 +1492,8 @@ public:
};
Q_ENUM(Type)
- explicit ContainerTypeEntry(const QString &name, Type type, const QVersionNumber &vr);
+ explicit ContainerTypeEntry(const QString &name, Type type, const QVersionNumber &vr,
+ const TypeEntry *parent);
Type type() const
{
@@ -1503,7 +1523,8 @@ public:
const QString &getterName,
const QString &smartPointerType,
const QString &refCountMethodName,
- const QVersionNumber &vr);
+ const QVersionNumber &vr,
+ const TypeEntry *parent);
QString getter() const
{
@@ -1529,7 +1550,8 @@ private:
class NamespaceTypeEntry : public ComplexTypeEntry
{
public:
- explicit NamespaceTypeEntry(const QString &name, const QVersionNumber &vr);
+ explicit NamespaceTypeEntry(const QString &name, const QVersionNumber &vr,
+ const TypeEntry *parent);
TypeEntry *clone() const override;
@@ -1559,7 +1581,8 @@ private:
class ValueTypeEntry : public ComplexTypeEntry
{
public:
- explicit ValueTypeEntry(const QString &name, const QVersionNumber &vr);
+ explicit ValueTypeEntry(const QString &name, const QVersionNumber &vr,
+ const TypeEntry *parent);
bool isValue() const override;
@@ -1568,14 +1591,16 @@ public:
TypeEntry *clone() const override;
protected:
- explicit ValueTypeEntry(const QString &name, Type t, const QVersionNumber &vr);
+ explicit ValueTypeEntry(const QString &name, Type t, const QVersionNumber &vr,
+ const TypeEntry *parent);
ValueTypeEntry(const ValueTypeEntry &);
};
class InterfaceTypeEntry : public ComplexTypeEntry
{
public:
- explicit InterfaceTypeEntry(const QString &name, const QVersionNumber &vr);
+ explicit InterfaceTypeEntry(const QString &name, const QVersionNumber &vr,
+ const TypeEntry *parent);
static QString interfaceName(const QString &name)
{
@@ -1608,7 +1633,8 @@ class FunctionTypeEntry : public TypeEntry
{
public:
explicit FunctionTypeEntry(const QString& name, const QString& signature,
- const QVersionNumber &vr);
+ const QVersionNumber &vr,
+ const TypeEntry *parent);
void addSignature(const QString& signature)
{
m_signatures << signature;
@@ -1636,7 +1662,8 @@ private:
class ObjectTypeEntry : public ComplexTypeEntry
{
public:
- explicit ObjectTypeEntry(const QString &name, const QVersionNumber &vr);
+ explicit ObjectTypeEntry(const QString &name, const QVersionNumber &vr,
+ const TypeEntry *parent);
InterfaceTypeEntry *designatedInterface() const override;
void setDesignatedInterface(InterfaceTypeEntry *entry)