aboutsummaryrefslogtreecommitdiffstats
path: root/sources/shiboken2/ApiExtractor/typesystem.h
diff options
context:
space:
mode:
authorFriedemann Kleint <Friedemann.Kleint@qt.io>2018-03-06 07:58:51 +0100
committerFriedemann Kleint <Friedemann.Kleint@qt.io>2018-03-06 12:43:06 +0100
commitdf7c72e63c6b7aecee156db2eff726bcfb89977e (patch)
treeb9cecf87e2cd75d11813cd06ef1f2a5ab28384de /sources/shiboken2/ApiExtractor/typesystem.h
parente621f81115cec5089f30755e09b9a59ece39660c (diff)
parentf3139399b273fdf405f20cba32a08262cd933d6e (diff)
Merge remote-tracking branch 'origin/5.9' into dev
Diffstat (limited to 'sources/shiboken2/ApiExtractor/typesystem.h')
-rw-r--r--sources/shiboken2/ApiExtractor/typesystem.h41
1 files changed, 15 insertions, 26 deletions
diff --git a/sources/shiboken2/ApiExtractor/typesystem.h b/sources/shiboken2/ApiExtractor/typesystem.h
index c8a1c88fa..62d348f69 100644
--- a/sources/shiboken2/ApiExtractor/typesystem.h
+++ b/sources/shiboken2/ApiExtractor/typesystem.h
@@ -1042,21 +1042,15 @@ private:
PrimitiveTypeEntry* m_referencedTypeEntry = nullptr;
};
-struct EnumValueRedirection
-{
- EnumValueRedirection() {}
- EnumValueRedirection(const QString &rej, const QString &us)
- : rejected(rej),
- used(us)
- {
- }
- QString rejected;
- QString used;
-};
-
class EnumTypeEntry : public TypeEntry
{
public:
+ enum EnumKind {
+ CEnum, // Standard C: enum Foo { value1, value2 }
+ AnonymousEnum, // enum { value1, value2 }
+ EnumClass // C++ 11 : enum class Foo { value1, value2 }
+ };
+
explicit EnumTypeEntry(const QString &nspace, const QString &enumName, double vr);
QString targetLangPackage() const override;
@@ -1077,6 +1071,9 @@ public:
m_qualifier = q;
}
+ EnumKind enumKind() const { return m_enumKind; }
+ void setEnumKind(EnumKind kind) { m_enumKind = kind; }
+
bool preferredConversion() const override;
bool isBoundsChecked() const
@@ -1120,7 +1117,7 @@ public:
m_extensible = is;
}
- bool isEnumValueRejected(const QString &name)
+ bool isEnumValueRejected(const QString &name) const
{
return m_rejectedEnums.contains(name);
}
@@ -1133,9 +1130,6 @@ public:
return m_rejectedEnums;
}
- void addEnumValueRedirection(const QString &rejected, const QString &usedValue);
- QString enumValueRedirection(const QString &value) const;
-
bool forceInteger() const
{
return m_forceInteger;
@@ -1145,14 +1139,7 @@ public:
m_forceInteger = force;
}
- bool isAnonymous() const
- {
- return m_anonymous;
- }
- void setAnonymous(bool anonymous)
- {
- m_anonymous = anonymous;
- }
+ bool isAnonymous() const { return m_enumKind == AnonymousEnum; }
private:
QString m_packageName;
@@ -1163,15 +1150,17 @@ private:
QString m_upperBound;
QStringList m_rejectedEnums;
- QVector<EnumValueRedirection> m_enumRedirections;
FlagsTypeEntry *m_flags = nullptr;
+ EnumKind m_enumKind = CEnum;
+
bool m_extensible = false;
bool m_forceInteger = false;
- bool m_anonymous = false;
};
+// EnumValueTypeEntry is used for resolving integer type templates
+// like array<EnumValue>.
class EnumValueTypeEntry : public TypeEntry
{
public: