diff options
author | Glenn Watson <glenn.watson@nokia.com> | 2012-07-24 11:41:50 +1000 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2012-08-08 07:55:19 +0200 |
commit | 6ebf215fdaf2d757ab90ae4d46c4b938e978e2dc (patch) | |
tree | 515da352f1cc4d5567b6d93f0b19952b2e27d705 /src/qml/qml/qqmltypenamecache.cpp | |
parent | 92562eacbc3c614a83a734f1108ed7df02415eae (diff) |
Add type name to singleton (module api) implementations.
This change renames the previous module api implementation
to singleton types.
When a singleton type is registered, a type name must be provided
that is used when accessing the API from QML. This makes the
implementation more consistent with the rest of QML.
Task-number: QTBUG-26549
Change-Id: Iab0bb1ccf516bd3ae20aee562a64d22976e0aecd
Reviewed-by: Chris Adams <christopher.adams@nokia.com>
Diffstat (limited to 'src/qml/qml/qqmltypenamecache.cpp')
-rw-r--r-- | src/qml/qml/qqmltypenamecache.cpp | 26 |
1 files changed, 22 insertions, 4 deletions
diff --git a/src/qml/qml/qqmltypenamecache.cpp b/src/qml/qml/qqmltypenamecache.cpp index f9d3e7704c..bc75ca6636 100644 --- a/src/qml/qml/qqmltypenamecache.cpp +++ b/src/qml/qml/qqmltypenamecache.cpp @@ -71,6 +71,21 @@ void QQmlTypeNameCache::add(const QHashedString &name, int importedScriptIndex, m_namedImports.insert(name, import); } +void QQmlTypeNameCache::addSingletonType(const QHashedString &name, QQmlMetaType::SingletonInstance *apiInstance, const QHashedString &nameSpace) +{ + Import import; + import.singletonType = apiInstance; + + if (nameSpace.length() != 0) { + Import *i = m_namedImports.value(nameSpace); + Q_ASSERT(i != 0); + m_namespacedImports[i].insert(name, import); + } else { + if (!m_namedImports.contains(name)) + m_namedImports.insert(name, import); + } +} + QQmlTypeNameCache::Result QQmlTypeNameCache::query(const QHashedStringRef &name) { Result result = query(m_namedImports, name); @@ -108,19 +123,22 @@ QQmlTypeNameCache::Result QQmlTypeNameCache::query(const QHashedV8String &name, Q_ASSERT(i->scriptIndex == -1); QMap<const Import *, QStringHash<Import> >::const_iterator it = m_namespacedImports.find(i); - if (it != m_namespacedImports.constEnd()) - return query(*it, name); + if (it != m_namespacedImports.constEnd()) { + Result r = query(*it, name); + if (r.isValid()) + return r; + } return typeSearch(i->modules, name); } -QQmlMetaType::ModuleApiInstance *QQmlTypeNameCache::moduleApi(const void *importNamespace) +QQmlMetaType::SingletonInstance *QQmlTypeNameCache::singletonType(const void *importNamespace) { Q_ASSERT(importNamespace); const Import *i = static_cast<const Import *>(importNamespace); Q_ASSERT(i->scriptIndex == -1); - return i->moduleApi; + return i->singletonType; } QT_END_NAMESPACE |