summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorOlivier Goffart <ogoffart@woboq.com>2014-08-10 18:56:37 +0200
committerOlivier Goffart (Woboq GmbH) <ogoffart@woboq.com>2015-02-05 14:28:18 +0000
commit9b72bcfd608817509d062f0971212cccfbe3d285 (patch)
treec3ff046b493af7e202cbdf460cc224368c5bd755 /src
parentd43d03529f7bc169776be161c2978856eefb0e93 (diff)
Introduces QMetaEnum::fromType
Change-Id: I1976c1844e52ef8d70a1bbe9945f3299428dbf87 Reviewed-by: Lars Knoll <lars.knoll@digia.com> Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
Diffstat (limited to 'src')
-rw-r--r--src/corelib/kernel/qmetaobject.cpp8
-rw-r--r--src/corelib/kernel/qmetaobject.h9
2 files changed, 17 insertions, 0 deletions
diff --git a/src/corelib/kernel/qmetaobject.cpp b/src/corelib/kernel/qmetaobject.cpp
index 3e2fb46143..1af0914ad8 100644
--- a/src/corelib/kernel/qmetaobject.cpp
+++ b/src/corelib/kernel/qmetaobject.cpp
@@ -2677,6 +2677,14 @@ QByteArray QMetaEnum::valueToKeys(int value) const
return keys;
}
+/*!
+ \fn QMetaEnum QMetaEnum::fromType() const
+ \since 5.5
+
+ Returns the QMetaEnum corresponding to the type in the template parameter.
+ The enum needs to be declared with Q_ENUM.
+*/
+
static QByteArray qualifiedName(const QMetaEnum &e)
{
return QByteArray(e.scope()) + "::" + e.name();
diff --git a/src/corelib/kernel/qmetaobject.h b/src/corelib/kernel/qmetaobject.h
index fdbcf5171d..eaef05f03d 100644
--- a/src/corelib/kernel/qmetaobject.h
+++ b/src/corelib/kernel/qmetaobject.h
@@ -223,6 +223,15 @@ public:
inline const QMetaObject *enclosingMetaObject() const { return mobj; }
inline bool isValid() const { return name() != 0; }
+
+ template<typename T> static QMetaEnum fromType() {
+ Q_STATIC_ASSERT_X(QtPrivate::IsQEnumHelper<T>::Value,
+ "QMetaEnum::fromType only works with enums declared as Q_ENUM or Q_FLAG");
+ const QMetaObject *metaObject = qt_getEnumMetaObject(T());
+ const char *name = qt_getEnumName(T());
+ return metaObject->enumerator(metaObject->indexOfEnumerator(name));
+ }
+
private:
const QMetaObject *mobj;
uint handle;