QVariant QObjectXmlModel::typedValue(const QXmlNodeModelIndex &n) const { switch (toNodeType(n)) { case QObjectProperty: { const QVariant &candidate = toMetaProperty(n).read(asQObject(n)); if (isTypeSupported(candidate.type())) return candidate; else return QVariant(); } case MetaObjectClassName: return QVariant(static_cast<QMetaObject*>(n.internalPointer())->className()); case MetaObjectSuperClass: { const QMetaObject *const superClass = static_cast<QMetaObject*>(n.internalPointer())->superClass(); if (superClass) return QVariant(superClass->className()); else return QVariant(); } case QObjectClassName: return QVariant(asQObject(n)->metaObject()->className()); default: return QVariant(); } }
void tst_QXmlNodeModelIndex::internalPointer() const { /* Check default value. */ { const QXmlNodeModelIndex index; QCOMPARE(index.internalPointer(), static_cast<void *>(0)); } }
void tst_QXmlNodeModelIndex::constCorrectness() const { const QXmlNodeModelIndex index; /* All these functions should be const. */ index.internalPointer(); index.data(); index.additionalData(); index.isNull(); index.model(); }
QXmlNodeModelIndex QObjectXmlModel::metaObjectSibling(const int pos, const QXmlNodeModelIndex &n) const { Q_ASSERT(pos == 1 || pos == -1); Q_ASSERT(!n.isNull()); const int indexOf = m_allMetaObjects.indexOf(static_cast<const QMetaObject *>(n.internalPointer())) + pos; if (indexOf >= 0 && indexOf < m_allMetaObjects.count()) return createIndex(const_cast<QMetaObject *>(m_allMetaObjects.at(indexOf)), MetaObject); else return QXmlNodeModelIndex(); }