void tst_QXmlNodeModelIndex::constCorrectness() const { const QXmlNodeModelIndex index; /* All these functions should be const. */ index.internalPointer(); index.data(); index.additionalData(); index.isNull(); index.model(); }
void QAbstractXmlReceiver::sendFromAxis(const QXmlNodeModelIndex &node) { Q_ASSERT(!node.isNull()); const QXmlNodeModelIndex::Iterator::Ptr it(node.iterate(axis)); QXmlNodeModelIndex next(it->next()); while(!next.isNull()) { sendAsNode(next); next = it->next(); } }
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(); }
Item AxisStep::mapToItem(const QXmlNodeModelIndex &node, const DynamicContext::Ptr &context) const { Q_ASSERT(!node.isNull()); Q_ASSERT(Item(node).isNode()); Q_ASSERT(Item(node)); Q_UNUSED(context); if(m_nodeTest->itemMatches(Item(node))) return Item(node); else return Item(); }
void tst_QXmlNodeModelIndex::isNull() const { /* Check default value. */ { const QXmlNodeModelIndex index; QVERIFY(index.isNull()); } /* Test default value on a temporary object. */ { QVERIFY(QXmlNodeModelIndex().isNull()); } }
bool XsdInstanceReader::hasChildElement() const { const QXmlNodeModelIndex index = m_model.index(); QXmlNodeModelIndex::Iterator::Ptr it = index.model()->iterate(index, QXmlNodeModelIndex::AxisChild); QXmlNodeModelIndex currentIndex = it->next(); while (!currentIndex.isNull()) { if (currentIndex.kind() == QXmlNodeModelIndex::Element) return true; currentIndex = it->next(); } return false; }
QHash<QXmlName, QXmlItem> PullBridge::attributeItems() { Q_ASSERT(m_current == StartElement); QHash<QXmlName, QXmlItem> attributes; QXmlNodeModelIndex::Iterator::Ptr it = m_index.iterate(QXmlNodeModelIndex::AxisAttribute); QXmlNodeModelIndex index = it->next(); while (!index.isNull()) { const Item attribute(index); attributes.insert(index.name(), QXmlItem(index)); index = it->next(); } return attributes; }
QString XsdInstanceReader::text() const { const QXmlNodeModelIndex index = m_model.index(); QXmlNodeModelIndex::Iterator::Ptr it = index.model()->iterate(index, QXmlNodeModelIndex::AxisChild); QString result; QXmlNodeModelIndex currentIndex = it->next(); while (!currentIndex.isNull()) { if (currentIndex.kind() == QXmlNodeModelIndex::Text) { result.append(Item(currentIndex).stringValue()); } currentIndex = it->next(); } return result; }
void AccelTree::copyNodeTo(const QXmlNodeModelIndex &node, QAbstractXmlReceiver *const receiver, const NodeCopySettings &settings) const { /* This code piece can be seen as a customized version of * QAbstractXmlReceiver::item/sendAsNode(). */ Q_ASSERT(receiver); Q_ASSERT(!node.isNull()); typedef QHash<QXmlName::PrefixCode, QXmlName::NamespaceCode> Binding; QStack<Binding> outputted; switch(node.kind()) { case QXmlNodeModelIndex::Element: { outputted.push(Binding()); /* Add the namespace for our element name. */ const QXmlName elementName(node.name()); receiver->startElement(elementName); if(!settings.testFlag(InheritNamespaces)) receiver->namespaceBinding(QXmlName(StandardNamespaces::StopNamespaceInheritance, 0, StandardPrefixes::StopNamespaceInheritance)); if(settings.testFlag(PreserveNamespaces)) node.sendNamespaces(receiver); else { /* Find the namespaces that we actually use and add them to outputted. These are drawn * from the element name, and the node's attributes. */ outputted.top().insert(elementName.prefix(), elementName.namespaceURI()); const QXmlNodeModelIndex::Iterator::Ptr attributes(iterate(node, QXmlNodeModelIndex::AxisAttribute)); QXmlNodeModelIndex attr(attributes->next()); while(!attr.isNull()) { const QXmlName &attrName = attr.name(); outputted.top().insert(attrName.prefix(), attrName.namespaceURI()); attr = attributes->next(); } Binding::const_iterator it(outputted.top().constBegin()); const Binding::const_iterator end(outputted.top().constEnd()); for(; it != end; ++it) receiver->namespaceBinding(QXmlName(it.value(), 0, it.key())); } /* Send the attributes of the element. */ { QXmlNodeModelIndex::Iterator::Ptr attributes(node.iterate(QXmlNodeModelIndex::AxisAttribute)); QXmlNodeModelIndex attribute(attributes->next()); while(!attribute.isNull()) { const QString &v = attribute.stringValue(); receiver->attribute(attribute.name(), QStringRef(&v)); attribute = attributes->next(); } } /* Send the children of the element. */ copyChildren(node, receiver, settings); receiver->endElement(); outputted.pop(); break; } case QXmlNodeModelIndex::Document: { /* We need to intercept and grab the elements of the document node, such * that we preserve/inherit preference applies to them. */ receiver->startDocument(); copyChildren(node, receiver, settings); receiver->endDocument(); break; } default: receiver->item(node); } }
QUrl AccelTree::baseUri(const QXmlNodeModelIndex &ni) const { switch(kind(toPreNumber(ni))) { case QXmlNodeModelIndex::Document: return baseUri(); case QXmlNodeModelIndex::Element: { const QXmlNodeModelIndex::Iterator::Ptr it(iterate(ni, QXmlNodeModelIndex::AxisAttribute)); QXmlNodeModelIndex next(it->next()); while(!next.isNull()) { if(next.name() == QXmlName(StandardNamespaces::xml, StandardLocalNames::base)) { const QUrl candidate(next.stringValue()); // TODO. The xml:base spec says to do URI escaping here. if(!candidate.isValid()) return QUrl(); else if(candidate.isRelative()) { const QXmlNodeModelIndex par(parent(ni)); if(par.isNull()) return baseUri().resolved(candidate); else return par.baseUri().resolved(candidate); } else return candidate; } next = it->next(); } /* We have no xml:base-attribute. Can any parent supply us a base URI? */ const QXmlNodeModelIndex par(parent(ni)); if(par.isNull()) return baseUri(); else return par.baseUri(); } case QXmlNodeModelIndex::ProcessingInstruction: /* Fallthrough. */ case QXmlNodeModelIndex::Comment: /* Fallthrough. */ case QXmlNodeModelIndex::Attribute: /* Fallthrough. */ case QXmlNodeModelIndex::Text: { const QXmlNodeModelIndex par(ni.iterate(QXmlNodeModelIndex::AxisParent)->next()); if(par.isNull()) return QUrl(); else return par.baseUri(); } case QXmlNodeModelIndex::Namespace: return QUrl(); } Q_ASSERT_X(false, Q_FUNC_INFO, "This line is never supposed to be reached."); return QUrl(); }
QXmlNodeModelIndex::NodeKind LoadingModel::kind(const QXmlNodeModelIndex &ni) const { Q_ASSERT(!ni.isNull()); return toInternal(ni)->kind; }
QXmlNodeModelIndex::NodeKind LoadingModel::kind(const QXmlNodeModelIndex &ni) const { if (ni.isNull()) qFatal("%s: node model index should not be null", Q_FUNC_INFO); return toInternal(ni)->kind; }