summaryrefslogtreecommitdiffstats
path: root/src/corelib/kernel/qmetaobject.h
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/corelib/kernel/qmetaobject.h
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/corelib/kernel/qmetaobject.h')
-rw-r--r--src/corelib/kernel/qmetaobject.h9
1 files changed, 9 insertions, 0 deletions
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;