From 806c8a563d8434613c7c0f2bb07cf73a8648511d Mon Sep 17 00:00:00 2001 From: Christian Kamm <christian.d.kamm@nokia.com> Date: Thu, 11 Nov 2010 10:46:19 +0100 Subject: [PATCH] QmlObjectValue: Add convenience functionality. Added hasLocalProperty() hasProperty() keysForEnum() Reviewed-by: Christian Kamm --- src/libs/qmljs/qmljsinterpreter.cpp | 28 ++++++++++++++++++++++++++++ src/libs/qmljs/qmljsinterpreter.h | 3 +++ 2 files changed, 31 insertions(+) diff --git a/src/libs/qmljs/qmljsinterpreter.cpp b/src/libs/qmljs/qmljsinterpreter.cpp index 78267b72884..47353fe135e 100644 --- a/src/libs/qmljs/qmljsinterpreter.cpp +++ b/src/libs/qmljs/qmljsinterpreter.cpp @@ -963,6 +963,25 @@ bool QmlObjectValue::isPointer(const QString &propertyName) const return false; } +bool QmlObjectValue::hasLocalProperty(const QString &typeName) const +{ + int idx = _metaObject->propertyIndex(typeName); + if (idx == -1) + return false; + return true; +} + +bool QmlObjectValue::hasProperty(const QString &propertyName) const +{ + for (const FakeMetaObject *iter = _metaObject; iter; iter = iter->superClass()) { + int propIdx = iter->propertyIndex(propertyName); + if (propIdx != -1) { + return true; + } + } + return false; +} + bool QmlObjectValue::enumContainsKey(const QString &enumName, const QString &enumKeyName) const { int idx = _metaObject->enumeratorIndex(enumName); @@ -976,6 +995,15 @@ bool QmlObjectValue::enumContainsKey(const QString &enumName, const QString &enu return false; } +QStringList QmlObjectValue::keysForEnum(const QString &enumName) const +{ + int idx = _metaObject->enumeratorIndex(enumName); + if (idx == -1) + return QStringList(); + const FakeMetaEnum &fme = _metaObject->enumerator(idx); + return fme.keys(); +} + // Returns true if this object is in a package or if there is an object that // has this one in its prototype chain and is itself in a package. bool QmlObjectValue::hasChildInPackage() const diff --git a/src/libs/qmljs/qmljsinterpreter.h b/src/libs/qmljs/qmljsinterpreter.h index 04f29e78689..76f0a975228 100644 --- a/src/libs/qmljs/qmljsinterpreter.h +++ b/src/libs/qmljs/qmljsinterpreter.h @@ -427,7 +427,10 @@ public: bool isWritable(const QString &propertyName) const; bool isPointer(const QString &propertyName) const; bool isEnum(const QString &typeName) const; + bool hasLocalProperty(const QString &typeName) const; + bool hasProperty(const QString &typeName) const; bool enumContainsKey(const QString &enumName, const QString &enumKeyName) const; + QStringList keysForEnum(const QString &enumName) const; bool hasChildInPackage() const; protected: -- GitLab