Extract method bool QDomNodeListPrivate::maybeCreateList()
Extract duplicated logic to own method, and call where previously used. Also, make `QDomNodeListPrivate::[list|timestamp]` mutable, to allow `maybeCreateList()` and `createList()` to be `const` methods, and avoid `const_cast` in `QDomNodeListPrivate::length()`. Task-number: QTBUG-115076 Change-Id: I4f3a27315da28082a12cc4f5653567039b4cb376 Reviewed-by: Edward Welbourne <edward.welbourne@qt.io> Reviewed-by: Marc Mutz <marc.mutz@qt.io>
This commit is contained in:
parent
e5ebb9022a
commit
b1e8287b8d
@ -649,7 +649,7 @@ bool QDomNodeListPrivate::operator!=(const QDomNodeListPrivate &other) const
|
||||
return !operator==(other);
|
||||
}
|
||||
|
||||
void QDomNodeListPrivate::createList()
|
||||
void QDomNodeListPrivate::createList() const
|
||||
{
|
||||
if (!node_impl)
|
||||
return;
|
||||
@ -703,16 +703,21 @@ void QDomNodeListPrivate::createList()
|
||||
}
|
||||
}
|
||||
|
||||
QDomNodePrivate* QDomNodeListPrivate::item(int index)
|
||||
bool QDomNodeListPrivate::maybeCreateList() const
|
||||
{
|
||||
if (!node_impl)
|
||||
return nullptr;
|
||||
return false;
|
||||
|
||||
const QDomDocumentPrivate *const doc = node_impl->ownerDocument();
|
||||
if (!doc || timestamp != doc->nodeListTime)
|
||||
createList();
|
||||
|
||||
if (index >= list.size())
|
||||
return true;
|
||||
}
|
||||
|
||||
QDomNodePrivate *QDomNodeListPrivate::item(int index)
|
||||
{
|
||||
if (!maybeCreateList() || index >= list.size() || index < 0)
|
||||
return nullptr;
|
||||
|
||||
return list.at(index);
|
||||
@ -720,15 +725,9 @@ QDomNodePrivate* QDomNodeListPrivate::item(int index)
|
||||
|
||||
int QDomNodeListPrivate::length() const
|
||||
{
|
||||
if (!node_impl)
|
||||
if (!maybeCreateList())
|
||||
return 0;
|
||||
|
||||
const QDomDocumentPrivate *const doc = node_impl->ownerDocument();
|
||||
if (!doc || timestamp != doc->nodeListTime) {
|
||||
QDomNodeListPrivate *that = const_cast<QDomNodeListPrivate *>(this);
|
||||
that->createList();
|
||||
}
|
||||
|
||||
return list.size();
|
||||
}
|
||||
|
||||
|
@ -142,7 +142,8 @@ public:
|
||||
bool operator==(const QDomNodeListPrivate &) const;
|
||||
bool operator!=(const QDomNodeListPrivate &) const;
|
||||
|
||||
void createList();
|
||||
void createList() const;
|
||||
bool maybeCreateList() const;
|
||||
QDomNodePrivate *item(int index);
|
||||
int length() const;
|
||||
|
||||
@ -153,8 +154,8 @@ public:
|
||||
QDomNodePrivate *node_impl;
|
||||
QString tagname;
|
||||
QString nsURI;
|
||||
QList<QDomNodePrivate *> list;
|
||||
long timestamp;
|
||||
mutable QList<QDomNodePrivate *> list;
|
||||
mutable long timestamp;
|
||||
};
|
||||
|
||||
class QDomNamedNodeMapPrivate
|
||||
|
Loading…
x
Reference in New Issue
Block a user