Rename QMetaSequence's "elements" to "values"
This is so that they are in line with the "value_type" usually found in containers. Associative containers have "key_type" and "mapped_type" and we will use those names for access to elements in QMetaAssociation. Using "value" as name for sequential containers improves consistency. Change-Id: I628b7e1446bb2d56843b843bca72d279a6b247e6 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
This commit is contained in:
parent
e460addc42
commit
549b7053a2
@ -48,7 +48,7 @@ QT_BEGIN_NAMESPACE
|
|||||||
\inmodule QtCore
|
\inmodule QtCore
|
||||||
\brief The QSequentialIterable class is an iterable interface for a container in a QVariant.
|
\brief The QSequentialIterable class is an iterable interface for a container in a QVariant.
|
||||||
|
|
||||||
This class allows several methods of accessing the elements of a container held within
|
This class allows several methods of accessing the values of a container held within
|
||||||
a QVariant. An instance of QSequentialIterable can be extracted from a QVariant if it can
|
a QVariant. An instance of QSequentialIterable can be extracted from a QVariant if it can
|
||||||
be converted to a QVariantList.
|
be converted to a QVariantList.
|
||||||
|
|
||||||
@ -89,7 +89,7 @@ QSequentialIterable::const_iterator QSequentialIterable::end() const
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
Returns the element at position \a idx in the container.
|
Returns the value at position \a idx in the container.
|
||||||
*/
|
*/
|
||||||
QVariant QSequentialIterable::at(qsizetype idx) const
|
QVariant QSequentialIterable::at(qsizetype idx) const
|
||||||
{
|
{
|
||||||
@ -101,12 +101,12 @@ QVariant QSequentialIterable::at(qsizetype idx) const
|
|||||||
dataPtr = v.data();
|
dataPtr = v.data();
|
||||||
|
|
||||||
const QMetaSequence metaSequence = m_metaSequence;
|
const QMetaSequence metaSequence = m_metaSequence;
|
||||||
if (metaSequence.canGetElementAtIndex()) {
|
if (metaSequence.canGetValueAtIndex()) {
|
||||||
metaSequence.elementAtIndex(m_iterable.constPointer(), idx, dataPtr);
|
metaSequence.valueAtIndex(m_iterable.constPointer(), idx, dataPtr);
|
||||||
} else if (metaSequence.canGetElementAtConstIterator()) {
|
} else if (metaSequence.canGetValueAtConstIterator()) {
|
||||||
void *iterator = metaSequence.constBegin(m_iterable.constPointer());
|
void *iterator = metaSequence.constBegin(m_iterable.constPointer());
|
||||||
metaSequence.advanceConstIterator(iterator, idx);
|
metaSequence.advanceConstIterator(iterator, idx);
|
||||||
metaSequence.elementAtConstIterator(iterator, dataPtr);
|
metaSequence.valueAtConstIterator(iterator, dataPtr);
|
||||||
metaSequence.destroyConstIterator(iterator);
|
metaSequence.destroyConstIterator(iterator);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -114,7 +114,7 @@ QVariant QSequentialIterable::at(qsizetype idx) const
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
Returns the number of elements in the container.
|
Returns the number of values in the container.
|
||||||
*/
|
*/
|
||||||
qsizetype QSequentialIterable::size() const
|
qsizetype QSequentialIterable::size() const
|
||||||
{
|
{
|
||||||
@ -207,7 +207,7 @@ const QVariant QSequentialIterable::const_iterator::operator*() const
|
|||||||
dataPtr = &v;
|
dataPtr = &v;
|
||||||
else
|
else
|
||||||
dataPtr = v.data();
|
dataPtr = v.data();
|
||||||
m_iterable->m_metaSequence.elementAtConstIterator(m_iterator, dataPtr);
|
m_iterable->m_metaSequence.valueAtConstIterator(m_iterator, dataPtr);
|
||||||
return v;
|
return v;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -54,9 +54,9 @@ QT_BEGIN_NAMESPACE
|
|||||||
a Variant without knowing its type.
|
a Variant without knowing its type.
|
||||||
|
|
||||||
The void* arguments to the various methods are typically created by using
|
The void* arguments to the various methods are typically created by using
|
||||||
a \l QVariant of the respective container or element type, and calling
|
a \l QVariant of the respective container or value type, and calling
|
||||||
its \l QVariant::data() or \l QVariant::constData() methods. However, you
|
its \l QVariant::data() or \l QVariant::constData() methods. However, you
|
||||||
can also pass plain pointers to objects of the container or element type.
|
can also pass plain pointers to objects of the container or value type.
|
||||||
|
|
||||||
Iterator invalidation follows the rules given by the underlying containers
|
Iterator invalidation follows the rules given by the underlying containers
|
||||||
and is not expressed in the API. Therefore, for a truly generic container,
|
and is not expressed in the API. Therefore, for a truly generic container,
|
||||||
@ -128,14 +128,14 @@ QMetaType QMetaSequence::valueMetaType() const
|
|||||||
|
|
||||||
/*!
|
/*!
|
||||||
Returns \c true if the underlying container is ordered, otherwise returns
|
Returns \c true if the underlying container is ordered, otherwise returns
|
||||||
\c false. A container is considered ordered if elements added to it are
|
\c false. A container is considered ordered if values added to it are
|
||||||
placed in a defined location. Inserting into or adding to an ordered
|
placed in a defined location. Inserting into or adding to an ordered
|
||||||
container will always succeed. Inserting into or adding to an unordered
|
container will always succeed. Inserting into or adding to an unordered
|
||||||
container may not succeed, for example if the container is a QSet that
|
container may not succeed, for example if the container is a QSet that
|
||||||
already contains the value being inserted.
|
already contains the value being inserted.
|
||||||
|
|
||||||
\sa addElement(), insertElementAtIterator(), addsAndRemovesElementsAtBegin(),
|
\sa addValue(), insertValueAtIterator(), addsAndRemovesValuesAtBegin(),
|
||||||
addsAndRemovesElementsAtEnd()
|
addsAndRemovesValuesAtEnd()
|
||||||
*/
|
*/
|
||||||
bool QMetaSequence::isOrdered() const
|
bool QMetaSequence::isOrdered() const
|
||||||
{
|
{
|
||||||
@ -145,14 +145,14 @@ bool QMetaSequence::isOrdered() const
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
Returns \c true if elements added using \l addElement() are placed at the
|
Returns \c true if values added using \l addValue() are placed at the
|
||||||
beginning of the container, otherwise returns \c false. Likewise
|
beginning of the container, otherwise returns \c false. Likewise
|
||||||
\l removeElement() removes an element from the beginning of the container
|
\l removeValue() removes an value from the beginning of the container
|
||||||
if this method returns \c true.
|
if this method returns \c true.
|
||||||
|
|
||||||
\sa addElement(), removeElement(), addsAndRemovesElementsAtEnd()
|
\sa addValue(), removeValue(), addsAndRemovesValuesAtEnd()
|
||||||
*/
|
*/
|
||||||
bool QMetaSequence::addsAndRemovesElementsAtBegin() const
|
bool QMetaSequence::addsAndRemovesValuesAtBegin() const
|
||||||
{
|
{
|
||||||
if (!d_ptr)
|
if (!d_ptr)
|
||||||
return false;
|
return false;
|
||||||
@ -160,14 +160,14 @@ bool QMetaSequence::addsAndRemovesElementsAtBegin() const
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
Returns \c true if elements added using \l addElement() are placed at the
|
Returns \c true if values added using \l addValue() are placed at the
|
||||||
end of the container, otherwise returns \c false. Likewise
|
end of the container, otherwise returns \c false. Likewise
|
||||||
\l removeElement() removes an element from the end of the container
|
\l removeValue() removes an value from the end of the container
|
||||||
if this method returns \c true.
|
if this method returns \c true.
|
||||||
|
|
||||||
\sa addElement(), removeElement(), addsAndRemovesElementsAtBegin()
|
\sa addValue(), removeValue(), addsAndRemovesValuesAtBegin()
|
||||||
*/
|
*/
|
||||||
bool QMetaSequence::addsAndRemovesElementsAtEnd() const
|
bool QMetaSequence::addsAndRemovesValuesAtEnd() const
|
||||||
{
|
{
|
||||||
if (!d_ptr)
|
if (!d_ptr)
|
||||||
return false;
|
return false;
|
||||||
@ -186,7 +186,7 @@ bool QMetaSequence::hasSize() const
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
Returns the number of elements in the given \a container if it can be
|
Returns the number of values in the given \a container if it can be
|
||||||
queried for its size. Otherwise returns \c -1.
|
queried for its size. Otherwise returns \c -1.
|
||||||
|
|
||||||
\sa hasSize()
|
\sa hasSize()
|
||||||
@ -218,107 +218,107 @@ void QMetaSequence::clear(void *container) const
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
Returns \c true if elements can be retrieved from the container by index,
|
Returns \c true if values can be retrieved from the container by index,
|
||||||
otherwise \c false.
|
otherwise \c false.
|
||||||
|
|
||||||
\sa elementAtIndex()
|
\sa valueAtIndex()
|
||||||
*/
|
*/
|
||||||
bool QMetaSequence::canGetElementAtIndex() const
|
bool QMetaSequence::canGetValueAtIndex() const
|
||||||
{
|
{
|
||||||
return d_ptr && d_ptr->elementAtIndexFn;
|
return d_ptr && d_ptr->valueAtIndexFn;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
Retrieves the element at \a index in the \a container and places it in the
|
Retrieves the value at \a index in the \a container and places it in the
|
||||||
memory location pointed to by \a result, if that is possible.
|
memory location pointed to by \a result, if that is possible.
|
||||||
|
|
||||||
\sa canGetElementAtIndex()
|
\sa canGetValueAtIndex()
|
||||||
*/
|
*/
|
||||||
void QMetaSequence::elementAtIndex(const void *container, qsizetype index, void *result) const
|
void QMetaSequence::valueAtIndex(const void *container, qsizetype index, void *result) const
|
||||||
{
|
{
|
||||||
if (canGetElementAtIndex())
|
if (canGetValueAtIndex())
|
||||||
d_ptr->elementAtIndexFn(container, index, result);
|
d_ptr->valueAtIndexFn(container, index, result);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
Returns \c true if an element can be written to the container by index,
|
Returns \c true if an value can be written to the container by index,
|
||||||
otherwise \c false.
|
otherwise \c false.
|
||||||
|
|
||||||
\sa setElementAtIndex()
|
\sa setValueAtIndex()
|
||||||
*/
|
*/
|
||||||
bool QMetaSequence::canSetElementAtIndex() const
|
bool QMetaSequence::canSetValueAtIndex() const
|
||||||
{
|
{
|
||||||
return d_ptr && d_ptr->setElementAtIndexFn;
|
return d_ptr && d_ptr->setValueAtIndexFn;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
Overwrites the element at \a index in the \a container using the \a element
|
Overwrites the value at \a index in the \a container using the \a value
|
||||||
passed as parameter if that is possible.
|
passed as parameter if that is possible.
|
||||||
|
|
||||||
\sa canSetElementAtIndex()
|
\sa canSetValueAtIndex()
|
||||||
*/
|
*/
|
||||||
void QMetaSequence::setElementAtIndex(void *container, qsizetype index, const void *element) const
|
void QMetaSequence::setValueAtIndex(void *container, qsizetype index, const void *value) const
|
||||||
{
|
{
|
||||||
if (canSetElementAtIndex())
|
if (canSetValueAtIndex())
|
||||||
d_ptr->setElementAtIndexFn(container, index, element);
|
d_ptr->setValueAtIndexFn(container, index, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
Returns \c true if elements can be added to the container, \c false
|
Returns \c true if values can be added to the container, \c false
|
||||||
otherwise.
|
otherwise.
|
||||||
|
|
||||||
\sa addElement(), isOrdered()
|
\sa addValue(), isOrdered()
|
||||||
*/
|
*/
|
||||||
bool QMetaSequence::canAddElement() const
|
bool QMetaSequence::canAddValue() const
|
||||||
{
|
{
|
||||||
return d_ptr && d_ptr->addElementFn;
|
return d_ptr && d_ptr->addValueFn;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
Adds \a element to the \a container if possible. If \l canAddElement()
|
Adds \a value to the \a container if possible. If \l canAddValue()
|
||||||
returns \c false, the \a element is not added. Else, if
|
returns \c false, the \a value is not added. Else, if
|
||||||
\l addsAndRemovesElementsAtBegin() returns \c true, the \a element is added
|
\l addsAndRemovesValuesAtBegin() returns \c true, the \a value is added
|
||||||
to the beginning of the \a container. Else, if
|
to the beginning of the \a container. Else, if
|
||||||
\l addsAndRemovesElementsAtEnd() returns \c true, the \a element is added to
|
\l addsAndRemovesValuesAtEnd() returns \c true, the \a value is added to
|
||||||
the end of the container. Else, the element is added in an unspecified
|
the end of the container. Else, the value is added in an unspecified
|
||||||
place or not at all. The latter is the case for adding elements to an
|
place or not at all. The latter is the case for adding values to an
|
||||||
unordered container, for example \l QSet.
|
unordered container, for example \l QSet.
|
||||||
|
|
||||||
\sa canAddElement(), addsAndRemovesElementsAtBegin(),
|
\sa canAddValue(), addsAndRemovesValuesAtBegin(),
|
||||||
addsAndRemovesElementsAtEnd(), isOrdered(), removeElement()
|
addsAndRemovesValuesAtEnd(), isOrdered(), removeValue()
|
||||||
*/
|
*/
|
||||||
void QMetaSequence::addElement(void *container, const void *element) const
|
void QMetaSequence::addValue(void *container, const void *value) const
|
||||||
{
|
{
|
||||||
if (canAddElement())
|
if (canAddValue())
|
||||||
d_ptr->addElementFn(container, element);
|
d_ptr->addValueFn(container, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
Returns \c true if elements can be removed from the container, \c false
|
Returns \c true if values can be removed from the container, \c false
|
||||||
otherwise.
|
otherwise.
|
||||||
|
|
||||||
\sa removeElement(), isOrdered()
|
\sa removeValue(), isOrdered()
|
||||||
*/
|
*/
|
||||||
bool QMetaSequence::canRemoveElement() const
|
bool QMetaSequence::canRemoveValue() const
|
||||||
{
|
{
|
||||||
return d_ptr && d_ptr->removeElementFn;
|
return d_ptr && d_ptr->removeValueFn;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
Removes an element from the \a container if possible. If
|
Removes an value from the \a container if possible. If
|
||||||
\l canRemoveElement() returns \c false, no element is removed. Else, if
|
\l canRemoveValue() returns \c false, no value is removed. Else, if
|
||||||
\l addsAndRemovesElementsAtBegin() returns \c true, the first element in
|
\l addsAndRemovesValuesAtBegin() returns \c true, the first value in
|
||||||
the \a container is removed. Else, if \l addsAndRemovesElementsAtEnd()
|
the \a container is removed. Else, if \l addsAndRemovesValuesAtEnd()
|
||||||
returns \c true, the last element in the \a container is removed. Else,
|
returns \c true, the last value in the \a container is removed. Else,
|
||||||
an unspecified element or nothing is removed.
|
an unspecified value or nothing is removed.
|
||||||
|
|
||||||
\sa canRemoveElement(), addsAndRemovesElementsAtBegin(),
|
\sa canRemoveValue(), addsAndRemovesValuesAtBegin(),
|
||||||
addsAndRemovesElementsAtEnd(), isOrdered(), addElement()
|
addsAndRemovesValuesAtEnd(), isOrdered(), addValue()
|
||||||
*/
|
*/
|
||||||
void QMetaSequence::removeElement(void *container) const
|
void QMetaSequence::removeValue(void *container) const
|
||||||
{
|
{
|
||||||
if (canRemoveElement())
|
if (canRemoveValue())
|
||||||
d_ptr->removeElementFn(container);
|
d_ptr->removeValueFn(container);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
@ -388,7 +388,7 @@ void QMetaSequence::destroyIterator(const void *iterator) const
|
|||||||
|
|
||||||
/*!
|
/*!
|
||||||
Returns \c true if the non-const iterators \a i and \a j point to the same
|
Returns \c true if the non-const iterators \a i and \a j point to the same
|
||||||
element in the container they are iterating over, otherwise returns \c
|
value in the container they are iterating over, otherwise returns \c
|
||||||
false.
|
false.
|
||||||
|
|
||||||
\sa begin(), end()
|
\sa begin(), end()
|
||||||
@ -441,99 +441,99 @@ qsizetype QMetaSequence::diffIterator(const void *i, const void *j) const
|
|||||||
Returns \c true if the underlying container can retrieve the value pointed
|
Returns \c true if the underlying container can retrieve the value pointed
|
||||||
to by a non-const iterator, \c false otherwise.
|
to by a non-const iterator, \c false otherwise.
|
||||||
|
|
||||||
\sa hasIterator(), elementAtIterator()
|
\sa hasIterator(), valueAtIterator()
|
||||||
*/
|
*/
|
||||||
bool QMetaSequence::canGetElementAtIterator() const
|
bool QMetaSequence::canGetValueAtIterator() const
|
||||||
{
|
{
|
||||||
return d_ptr && d_ptr->elementAtIteratorFn;
|
return d_ptr && d_ptr->valueAtIteratorFn;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
Retrieves the element pointed to by the non-const \a iterator and stores it
|
Retrieves the value pointed to by the non-const \a iterator and stores it
|
||||||
in the memory location pointed to by \a result, if possible.
|
in the memory location pointed to by \a result, if possible.
|
||||||
|
|
||||||
\sa canGetElementAtIterator(), begin(), end()
|
\sa canGetValueAtIterator(), begin(), end()
|
||||||
*/
|
*/
|
||||||
void QMetaSequence::elementAtIterator(const void *iterator, void *result) const
|
void QMetaSequence::valueAtIterator(const void *iterator, void *result) const
|
||||||
{
|
{
|
||||||
if (canGetElementAtIterator())
|
if (canGetValueAtIterator())
|
||||||
d_ptr->elementAtIteratorFn(iterator, result);
|
d_ptr->valueAtIteratorFn(iterator, result);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
Returns \c true if the underlying container can write to the value pointed
|
Returns \c true if the underlying container can write to the value pointed
|
||||||
to by a non-const iterator, \c false otherwise.
|
to by a non-const iterator, \c false otherwise.
|
||||||
|
|
||||||
\sa hasIterator(), setElementAtIterator()
|
\sa hasIterator(), setValueAtIterator()
|
||||||
*/
|
*/
|
||||||
bool QMetaSequence::canSetElementAtIterator() const
|
bool QMetaSequence::canSetValueAtIterator() const
|
||||||
{
|
{
|
||||||
return d_ptr && d_ptr->setElementAtIteratorFn;
|
return d_ptr && d_ptr->setValueAtIteratorFn;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
Writes \a element to the value pointed to by the non-const \a iterator, if
|
Writes \a value to the value pointed to by the non-const \a iterator, if
|
||||||
possible.
|
possible.
|
||||||
|
|
||||||
\sa canSetElementAtIterator(), begin(), end()
|
\sa canSetValueAtIterator(), begin(), end()
|
||||||
*/
|
*/
|
||||||
void QMetaSequence::setElementAtIterator(const void *iterator, const void *element) const
|
void QMetaSequence::setValueAtIterator(const void *iterator, const void *value) const
|
||||||
{
|
{
|
||||||
if (canSetElementAtIterator())
|
if (canSetValueAtIterator())
|
||||||
d_ptr->setElementAtIteratorFn(iterator, element);
|
d_ptr->setValueAtIteratorFn(iterator, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
Returns \c true if the underlying container can insert a new element, taking
|
Returns \c true if the underlying container can insert a new value, taking
|
||||||
the location pointed to by a non-const iterator into account.
|
the location pointed to by a non-const iterator into account.
|
||||||
|
|
||||||
\sa hasIterator(), insertElementAtIterator()
|
\sa hasIterator(), insertValueAtIterator()
|
||||||
*/
|
*/
|
||||||
bool QMetaSequence::canInsertElementAtIterator() const
|
bool QMetaSequence::canInsertValueAtIterator() const
|
||||||
{
|
{
|
||||||
return d_ptr && d_ptr->insertElementAtIteratorFn;
|
return d_ptr && d_ptr->insertValueAtIteratorFn;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
Inserts \a element into the \a container, if possible, taking the non-const
|
Inserts \a value into the \a container, if possible, taking the non-const
|
||||||
\a iterator into account. If \l canInsertElementAtIterator() returns
|
\a iterator into account. If \l canInsertValueAtIterator() returns
|
||||||
\c false, the \a element is not inserted. Else if \l isOrdered() returns
|
\c false, the \a value is not inserted. Else if \l isOrdered() returns
|
||||||
\c true, the element is inserted before the element pointed to by
|
\c true, the value is inserted before the value pointed to by
|
||||||
\a iterator. Else, the \a element is inserted at an unspecified place or not
|
\a iterator. Else, the \a value is inserted at an unspecified place or not
|
||||||
at all. In the latter case, the \a iterator is taken as a hint. If it points
|
at all. In the latter case, the \a iterator is taken as a hint. If it points
|
||||||
to the correct place for the \a element, the operation may be faster than a
|
to the correct place for the \a value, the operation may be faster than a
|
||||||
\l addElement() without iterator.
|
\l addValue() without iterator.
|
||||||
|
|
||||||
\sa canInsertElementAtIterator(), isOrdered(), begin(), end()
|
\sa canInsertValueAtIterator(), isOrdered(), begin(), end()
|
||||||
*/
|
*/
|
||||||
void QMetaSequence::insertElementAtIterator(void *container, const void *iterator,
|
void QMetaSequence::insertValueAtIterator(void *container, const void *iterator,
|
||||||
const void *element) const
|
const void *value) const
|
||||||
{
|
{
|
||||||
if (canInsertElementAtIterator())
|
if (canInsertValueAtIterator())
|
||||||
d_ptr->insertElementAtIteratorFn(container, iterator, element);
|
d_ptr->insertValueAtIteratorFn(container, iterator, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
Returns \c true if the element pointed to by a non-const iterator can be
|
Returns \c true if the value pointed to by a non-const iterator can be
|
||||||
erased, \c false otherwise.
|
erased, \c false otherwise.
|
||||||
|
|
||||||
\sa hasIterator(), eraseElementAtIterator()
|
\sa hasIterator(), eraseValueAtIterator()
|
||||||
*/
|
*/
|
||||||
bool QMetaSequence::canEraseElementAtIterator() const
|
bool QMetaSequence::canEraseValueAtIterator() const
|
||||||
{
|
{
|
||||||
return d_ptr && d_ptr->eraseElementAtIteratorFn;
|
return d_ptr && d_ptr->eraseValueAtIteratorFn;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
Erases the element pointed to by the non-const \a iterator from the
|
Erases the value pointed to by the non-const \a iterator from the
|
||||||
\a container, if possible.
|
\a container, if possible.
|
||||||
|
|
||||||
\sa canEraseElementAtIterator(), begin(), end()
|
\sa canEraseValueAtIterator(), begin(), end()
|
||||||
*/
|
*/
|
||||||
void QMetaSequence::eraseElementAtIterator(void *container, const void *iterator) const
|
void QMetaSequence::eraseValueAtIterator(void *container, const void *iterator) const
|
||||||
{
|
{
|
||||||
if (canEraseElementAtIterator())
|
if (canEraseValueAtIterator())
|
||||||
d_ptr->eraseElementAtIteratorFn(container, iterator);
|
d_ptr->eraseValueAtIteratorFn(container, iterator);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
@ -604,7 +604,7 @@ void QMetaSequence::destroyConstIterator(const void *iterator) const
|
|||||||
|
|
||||||
/*!
|
/*!
|
||||||
Returns \c true if the const iterators \a i and \a j point to the same
|
Returns \c true if the const iterators \a i and \a j point to the same
|
||||||
element in the container they are iterating over, otherwise returns \c
|
value in the container they are iterating over, otherwise returns \c
|
||||||
false.
|
false.
|
||||||
|
|
||||||
\sa constBegin(), constEnd()
|
\sa constBegin(), constEnd()
|
||||||
@ -657,23 +657,23 @@ qsizetype QMetaSequence::diffConstIterator(const void *i, const void *j) const
|
|||||||
Returns \c true if the underlying container can retrieve the value pointed
|
Returns \c true if the underlying container can retrieve the value pointed
|
||||||
to by a const iterator, \c false otherwise.
|
to by a const iterator, \c false otherwise.
|
||||||
|
|
||||||
\sa hasConstIterator(), elementAtConstIterator()
|
\sa hasConstIterator(), valueAtConstIterator()
|
||||||
*/
|
*/
|
||||||
bool QMetaSequence::canGetElementAtConstIterator() const
|
bool QMetaSequence::canGetValueAtConstIterator() const
|
||||||
{
|
{
|
||||||
return d_ptr && d_ptr->elementAtConstIteratorFn;
|
return d_ptr && d_ptr->valueAtConstIteratorFn;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
Retrieves the element pointed to by the const \a iterator and stores it
|
Retrieves the value pointed to by the const \a iterator and stores it
|
||||||
in the memory location pointed to by \a result, if possible.
|
in the memory location pointed to by \a result, if possible.
|
||||||
|
|
||||||
\sa canGetElementAtConstIterator(), constBegin(), constEnd()
|
\sa canGetValueAtConstIterator(), constBegin(), constEnd()
|
||||||
*/
|
*/
|
||||||
void QMetaSequence::elementAtConstIterator(const void *iterator, void *result) const
|
void QMetaSequence::valueAtConstIterator(const void *iterator, void *result) const
|
||||||
{
|
{
|
||||||
if (canGetElementAtConstIterator())
|
if (canGetValueAtConstIterator())
|
||||||
d_ptr->elementAtConstIteratorFn(iterator, result);
|
d_ptr->valueAtConstIteratorFn(iterator, result);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
|
@ -73,15 +73,15 @@ public:
|
|||||||
using ClearFn = void(*)(void *);
|
using ClearFn = void(*)(void *);
|
||||||
ClearFn clearFn;
|
ClearFn clearFn;
|
||||||
|
|
||||||
using ElementAtIndexFn = void(*)(const void *, qsizetype, void *);
|
using ValueAtIndexFn = void(*)(const void *, qsizetype, void *);
|
||||||
ElementAtIndexFn elementAtIndexFn;
|
ValueAtIndexFn valueAtIndexFn;
|
||||||
using SetElementAtIndexFn = void(*)(void *, qsizetype, const void *);
|
using SetValueAtIndexFn = void(*)(void *, qsizetype, const void *);
|
||||||
SetElementAtIndexFn setElementAtIndexFn;
|
SetValueAtIndexFn setValueAtIndexFn;
|
||||||
|
|
||||||
using AddElementFn = void(*)(void *, const void *);
|
using AddValueFn = void(*)(void *, const void *);
|
||||||
AddElementFn addElementFn;
|
AddValueFn addValueFn;
|
||||||
using RemoveElementFn = void(*)(void *);
|
using RemoveValueFn = void(*)(void *);
|
||||||
RemoveElementFn removeElementFn;
|
RemoveValueFn removeValueFn;
|
||||||
|
|
||||||
using CreateIteratorFn = void *(*)(void *, Position);
|
using CreateIteratorFn = void *(*)(void *, Position);
|
||||||
CreateIteratorFn createIteratorFn;
|
CreateIteratorFn createIteratorFn;
|
||||||
@ -95,14 +95,14 @@ public:
|
|||||||
AdvanceIteratorFn advanceIteratorFn;
|
AdvanceIteratorFn advanceIteratorFn;
|
||||||
using DiffIteratorFn = qsizetype(*)(const void *, const void *);
|
using DiffIteratorFn = qsizetype(*)(const void *, const void *);
|
||||||
DiffIteratorFn diffIteratorFn;
|
DiffIteratorFn diffIteratorFn;
|
||||||
using ElementAtIteratorFn = void(*)(const void *, void *);
|
using ValueAtIteratorFn = void(*)(const void *, void *);
|
||||||
ElementAtIteratorFn elementAtIteratorFn;
|
ValueAtIteratorFn valueAtIteratorFn;
|
||||||
using SetElementAtIteratorFn = void(*)(const void *, const void *);
|
using SetValueAtIteratorFn = void(*)(const void *, const void *);
|
||||||
SetElementAtIteratorFn setElementAtIteratorFn;
|
SetValueAtIteratorFn setValueAtIteratorFn;
|
||||||
using InsertElementAtIteratorFn = void(*)(void *, const void *, const void *);
|
using InsertValueAtIteratorFn = void(*)(void *, const void *, const void *);
|
||||||
InsertElementAtIteratorFn insertElementAtIteratorFn;
|
InsertValueAtIteratorFn insertValueAtIteratorFn;
|
||||||
using EraseElementAtIteratorFn = void(*)(void *, const void *);
|
using EraseValueAtIteratorFn = void(*)(void *, const void *);
|
||||||
EraseElementAtIteratorFn eraseElementAtIteratorFn;
|
EraseValueAtIteratorFn eraseValueAtIteratorFn;
|
||||||
|
|
||||||
using CreateConstIteratorFn = void *(*)(const void *, Position);
|
using CreateConstIteratorFn = void *(*)(const void *, Position);
|
||||||
CreateConstIteratorFn createConstIteratorFn;
|
CreateConstIteratorFn createConstIteratorFn;
|
||||||
@ -111,7 +111,7 @@ public:
|
|||||||
CopyIteratorFn copyConstIteratorFn;
|
CopyIteratorFn copyConstIteratorFn;
|
||||||
AdvanceIteratorFn advanceConstIteratorFn;
|
AdvanceIteratorFn advanceConstIteratorFn;
|
||||||
DiffIteratorFn diffConstIteratorFn;
|
DiffIteratorFn diffConstIteratorFn;
|
||||||
ElementAtIteratorFn elementAtConstIteratorFn;
|
ValueAtIteratorFn valueAtConstIteratorFn;
|
||||||
};
|
};
|
||||||
|
|
||||||
template<typename C>
|
template<typename C>
|
||||||
@ -173,7 +173,7 @@ class QMetaSequenceForContainer
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static constexpr QMetaSequenceInterface::ElementAtIndexFn getElementAtIndexFn()
|
static constexpr QMetaSequenceInterface::ValueAtIndexFn getValueAtIndexFn()
|
||||||
{
|
{
|
||||||
if constexpr (QContainerTraits::has_at_v<C>) {
|
if constexpr (QContainerTraits::has_at_v<C>) {
|
||||||
return [](const void *c, qsizetype i, void *r) {
|
return [](const void *c, qsizetype i, void *r) {
|
||||||
@ -190,7 +190,7 @@ class QMetaSequenceForContainer
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static constexpr QMetaSequenceInterface::SetElementAtIndexFn getSetElementAtIndexFn()
|
static constexpr QMetaSequenceInterface::SetValueAtIndexFn getSetValueAtIndexFn()
|
||||||
{
|
{
|
||||||
if constexpr (QContainerTraits::can_set_at_index_v<C>) {
|
if constexpr (QContainerTraits::can_set_at_index_v<C>) {
|
||||||
return [](void *c, qsizetype i, const void *e) {
|
return [](void *c, qsizetype i, const void *e) {
|
||||||
@ -202,7 +202,7 @@ class QMetaSequenceForContainer
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static constexpr QMetaSequenceInterface::AddElementFn getAddElementFn()
|
static constexpr QMetaSequenceInterface::AddValueFn getAddValueFn()
|
||||||
{
|
{
|
||||||
if constexpr (QContainerTraits::has_push_back_v<C>) {
|
if constexpr (QContainerTraits::has_push_back_v<C>) {
|
||||||
return [](void *c, const void *v) {
|
return [](void *c, const void *v) {
|
||||||
@ -224,7 +224,7 @@ class QMetaSequenceForContainer
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static constexpr QMetaSequenceInterface::RemoveElementFn getRemoveElementFn()
|
static constexpr QMetaSequenceInterface::RemoveValueFn getRemoveValueFn()
|
||||||
{
|
{
|
||||||
if constexpr (QContainerTraits::has_pop_back_v<C>) {
|
if constexpr (QContainerTraits::has_pop_back_v<C>) {
|
||||||
return [](void *c) { static_cast<C *>(c)->pop_back(); };
|
return [](void *c) { static_cast<C *>(c)->pop_back(); };
|
||||||
@ -315,7 +315,7 @@ class QMetaSequenceForContainer
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static constexpr QMetaSequenceInterface::ElementAtIteratorFn getElementAtIteratorFn()
|
static constexpr QMetaSequenceInterface::ValueAtIteratorFn getValueAtIteratorFn()
|
||||||
{
|
{
|
||||||
if constexpr (QContainerTraits::has_iterator_v<C>
|
if constexpr (QContainerTraits::has_iterator_v<C>
|
||||||
&& QContainerTraits::can_get_at_iterator_v<C> && !std::is_const_v<C>) {
|
&& QContainerTraits::can_get_at_iterator_v<C> && !std::is_const_v<C>) {
|
||||||
@ -328,7 +328,7 @@ class QMetaSequenceForContainer
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static constexpr QMetaSequenceInterface::SetElementAtIteratorFn getSetElementAtIteratorFn()
|
static constexpr QMetaSequenceInterface::SetValueAtIteratorFn getSetValueAtIteratorFn()
|
||||||
{
|
{
|
||||||
if constexpr (QContainerTraits::has_iterator_v<C>
|
if constexpr (QContainerTraits::has_iterator_v<C>
|
||||||
&& QContainerTraits::can_set_at_iterator_v<C> && !std::is_const_v<C>) {
|
&& QContainerTraits::can_set_at_iterator_v<C> && !std::is_const_v<C>) {
|
||||||
@ -341,7 +341,7 @@ class QMetaSequenceForContainer
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static constexpr QMetaSequenceInterface::InsertElementAtIteratorFn getInsertElementAtIteratorFn()
|
static constexpr QMetaSequenceInterface::InsertValueAtIteratorFn getInsertValueAtIteratorFn()
|
||||||
{
|
{
|
||||||
if constexpr (QContainerTraits::has_iterator_v<C>
|
if constexpr (QContainerTraits::has_iterator_v<C>
|
||||||
&& QContainerTraits::can_insert_at_iterator_v<C> && !std::is_const_v<C>) {
|
&& QContainerTraits::can_insert_at_iterator_v<C> && !std::is_const_v<C>) {
|
||||||
@ -355,7 +355,7 @@ class QMetaSequenceForContainer
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static constexpr QMetaSequenceInterface::EraseElementAtIteratorFn getEraseElementAtIteratorFn()
|
static constexpr QMetaSequenceInterface::EraseValueAtIteratorFn getEraseValueAtIteratorFn()
|
||||||
{
|
{
|
||||||
if constexpr (QContainerTraits::has_iterator_v<C>
|
if constexpr (QContainerTraits::has_iterator_v<C>
|
||||||
&& QContainerTraits::can_erase_at_iterator_v<C> && !std::is_const_v<C>) {
|
&& QContainerTraits::can_erase_at_iterator_v<C> && !std::is_const_v<C>) {
|
||||||
@ -447,7 +447,7 @@ class QMetaSequenceForContainer
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static constexpr QMetaSequenceInterface::ElementAtIteratorFn getElementAtConstIteratorFn()
|
static constexpr QMetaSequenceInterface::ValueAtIteratorFn getValueAtConstIteratorFn()
|
||||||
{
|
{
|
||||||
if constexpr (QContainerTraits::has_const_iterator_v<C>
|
if constexpr (QContainerTraits::has_const_iterator_v<C>
|
||||||
&& QContainerTraits::can_get_at_iterator_v<C>) {
|
&& QContainerTraits::can_get_at_iterator_v<C>) {
|
||||||
@ -472,27 +472,27 @@ QMetaSequenceInterface QMetaSequenceForContainer<C>::metaSequence = {
|
|||||||
/*.valueMetaType=*/ getValueMetaType(),
|
/*.valueMetaType=*/ getValueMetaType(),
|
||||||
/*.sizeFn=*/ getSizeFn(),
|
/*.sizeFn=*/ getSizeFn(),
|
||||||
/*.clearFn=*/ getClearFn(),
|
/*.clearFn=*/ getClearFn(),
|
||||||
/*.elementAtIndexFn=*/ getElementAtIndexFn(),
|
/*.valueAtIndexFn=*/ getValueAtIndexFn(),
|
||||||
/*.setElementAtIndexFn=*/ getSetElementAtIndexFn(),
|
/*.setValueAtIndexFn=*/ getSetValueAtIndexFn(),
|
||||||
/*.addElementFn=*/ getAddElementFn(),
|
/*.addValueFn=*/ getAddValueFn(),
|
||||||
/*.removeLastElementFn=*/ getRemoveElementFn(),
|
/*.removeLastValueFn=*/ getRemoveValueFn(),
|
||||||
/*.createIteratorFn=*/ getCreateIteratorFn(),
|
/*.createIteratorFn=*/ getCreateIteratorFn(),
|
||||||
/*.destroyIteratorFn=*/ getDestroyIteratorFn(),
|
/*.destroyIteratorFn=*/ getDestroyIteratorFn(),
|
||||||
/*.equalIteratorFn=*/ getCompareIteratorFn(),
|
/*.equalIteratorFn=*/ getCompareIteratorFn(),
|
||||||
/*.copyIteratorFn=*/ getCopyIteratorFn(),
|
/*.copyIteratorFn=*/ getCopyIteratorFn(),
|
||||||
/*.advanceIteratorFn=*/ getAdvanceIteratorFn(),
|
/*.advanceIteratorFn=*/ getAdvanceIteratorFn(),
|
||||||
/*.diffIteratorFn=*/ getDiffIteratorFn(),
|
/*.diffIteratorFn=*/ getDiffIteratorFn(),
|
||||||
/*.elementAtIteratorFn=*/ getElementAtIteratorFn(),
|
/*.valueAtIteratorFn=*/ getValueAtIteratorFn(),
|
||||||
/*.setElementAtIteratorFn=*/ getSetElementAtIteratorFn(),
|
/*.setValueAtIteratorFn=*/ getSetValueAtIteratorFn(),
|
||||||
/*.insertElementAtIteratorFn=*/ getInsertElementAtIteratorFn(),
|
/*.insertValueAtIteratorFn=*/ getInsertValueAtIteratorFn(),
|
||||||
/*.eraseElementAtIteratorFn=*/ getEraseElementAtIteratorFn(),
|
/*.eraseValueAtIteratorFn=*/ getEraseValueAtIteratorFn(),
|
||||||
/*.createConstIteratorFn=*/ getCreateConstIteratorFn(),
|
/*.createConstIteratorFn=*/ getCreateConstIteratorFn(),
|
||||||
/*.destroyConstIteratorFn=*/ getDestroyConstIteratorFn(),
|
/*.destroyConstIteratorFn=*/ getDestroyConstIteratorFn(),
|
||||||
/*.equalConstIteratorFn=*/ getCompareConstIteratorFn(),
|
/*.equalConstIteratorFn=*/ getCompareConstIteratorFn(),
|
||||||
/*.copyConstIteratorFn=*/ getCopyConstIteratorFn(),
|
/*.copyConstIteratorFn=*/ getCopyConstIteratorFn(),
|
||||||
/*.advanceConstIteratorFn=*/ getAdvanceConstIteratorFn(),
|
/*.advanceConstIteratorFn=*/ getAdvanceConstIteratorFn(),
|
||||||
/*.diffConstIteratorFn=*/ getDiffConstIteratorFn(),
|
/*.diffConstIteratorFn=*/ getDiffConstIteratorFn(),
|
||||||
/*.elementAtConstIteratorFn=*/ getElementAtConstIteratorFn(),
|
/*.valueAtConstIteratorFn=*/ getValueAtConstIteratorFn(),
|
||||||
};
|
};
|
||||||
|
|
||||||
template<typename C>
|
template<typename C>
|
||||||
@ -522,8 +522,8 @@ public:
|
|||||||
QMetaType valueMetaType() const;
|
QMetaType valueMetaType() const;
|
||||||
|
|
||||||
bool isOrdered() const;
|
bool isOrdered() const;
|
||||||
bool addsAndRemovesElementsAtBegin() const;
|
bool addsAndRemovesValuesAtBegin() const;
|
||||||
bool addsAndRemovesElementsAtEnd() const;
|
bool addsAndRemovesValuesAtEnd() const;
|
||||||
|
|
||||||
bool hasSize() const;
|
bool hasSize() const;
|
||||||
qsizetype size(const void *container) const;
|
qsizetype size(const void *container) const;
|
||||||
@ -531,17 +531,17 @@ public:
|
|||||||
bool canClear() const;
|
bool canClear() const;
|
||||||
void clear(void *container) const;
|
void clear(void *container) const;
|
||||||
|
|
||||||
bool canGetElementAtIndex() const;
|
bool canGetValueAtIndex() const;
|
||||||
void elementAtIndex(const void *container, qsizetype index, void *result) const;
|
void valueAtIndex(const void *container, qsizetype index, void *result) const;
|
||||||
|
|
||||||
bool canSetElementAtIndex() const;
|
bool canSetValueAtIndex() const;
|
||||||
void setElementAtIndex(void *container, qsizetype index, const void *element) const;
|
void setValueAtIndex(void *container, qsizetype index, const void *value) const;
|
||||||
|
|
||||||
bool canAddElement() const;
|
bool canAddValue() const;
|
||||||
void addElement(void *container, const void *element) const;
|
void addValue(void *container, const void *value) const;
|
||||||
|
|
||||||
bool canRemoveElement() const;
|
bool canRemoveValue() const;
|
||||||
void removeElement(void *container) const;
|
void removeValue(void *container) const;
|
||||||
|
|
||||||
bool hasIterator() const;
|
bool hasIterator() const;
|
||||||
void *begin(void *container) const;
|
void *begin(void *container) const;
|
||||||
@ -552,17 +552,17 @@ public:
|
|||||||
void advanceIterator(void *iterator, qsizetype step) const;
|
void advanceIterator(void *iterator, qsizetype step) const;
|
||||||
qsizetype diffIterator(const void *i, const void *j) const;
|
qsizetype diffIterator(const void *i, const void *j) const;
|
||||||
|
|
||||||
bool canGetElementAtIterator() const;
|
bool canGetValueAtIterator() const;
|
||||||
void elementAtIterator(const void *iterator, void *result) const;
|
void valueAtIterator(const void *iterator, void *result) const;
|
||||||
|
|
||||||
bool canSetElementAtIterator() const;
|
bool canSetValueAtIterator() const;
|
||||||
void setElementAtIterator(const void *iterator, const void *element) const;
|
void setValueAtIterator(const void *iterator, const void *value) const;
|
||||||
|
|
||||||
bool canInsertElementAtIterator() const;
|
bool canInsertValueAtIterator() const;
|
||||||
void insertElementAtIterator(void *container, const void *iterator, const void *element) const;
|
void insertValueAtIterator(void *container, const void *iterator, const void *value) const;
|
||||||
|
|
||||||
bool canEraseElementAtIterator() const;
|
bool canEraseValueAtIterator() const;
|
||||||
void eraseElementAtIterator(void *container, const void *iterator) const;
|
void eraseValueAtIterator(void *container, const void *iterator) const;
|
||||||
|
|
||||||
bool hasConstIterator() const;
|
bool hasConstIterator() const;
|
||||||
void *constBegin(const void *container) const;
|
void *constBegin(const void *container) const;
|
||||||
@ -573,8 +573,8 @@ public:
|
|||||||
void advanceConstIterator(void *iterator, qsizetype step) const;
|
void advanceConstIterator(void *iterator, qsizetype step) const;
|
||||||
qsizetype diffConstIterator(const void *i, const void *j) const;
|
qsizetype diffConstIterator(const void *i, const void *j) const;
|
||||||
|
|
||||||
bool canGetElementAtConstIterator() const;
|
bool canGetValueAtConstIterator() const;
|
||||||
void elementAtConstIterator(const void *iterator, void *result) const;
|
void valueAtConstIterator(const void *iterator, void *result) const;
|
||||||
|
|
||||||
friend bool operator==(const QMetaSequence &a, const QMetaSequence &b)
|
friend bool operator==(const QMetaSequence &a, const QMetaSequence &b)
|
||||||
{
|
{
|
||||||
|
@ -258,15 +258,15 @@ void tst_QMetaContainer::testSequence()
|
|||||||
QFETCH(bool, canEraseAtIterator);
|
QFETCH(bool, canEraseAtIterator);
|
||||||
QFETCH(bool, isOrdered);
|
QFETCH(bool, isOrdered);
|
||||||
|
|
||||||
QVERIFY(metaSequence.canAddElement());
|
QVERIFY(metaSequence.canAddValue());
|
||||||
QCOMPARE(metaSequence.hasSize(), hasSize);
|
QCOMPARE(metaSequence.hasSize(), hasSize);
|
||||||
QCOMPARE(metaSequence.canGetElementAtIndex(), isIndexed);
|
QCOMPARE(metaSequence.canGetValueAtIndex(), isIndexed);
|
||||||
QCOMPARE(metaSequence.canSetElementAtIndex(), isIndexed);
|
QCOMPARE(metaSequence.canSetValueAtIndex(), isIndexed);
|
||||||
QCOMPARE(metaSequence.canRemoveElement(), canRemove);
|
QCOMPARE(metaSequence.canRemoveValue(), canRemove);
|
||||||
QCOMPARE(metaSequence.hasBidirectionalIterator(), hasBidirectionalIterator);
|
QCOMPARE(metaSequence.hasBidirectionalIterator(), hasBidirectionalIterator);
|
||||||
QCOMPARE(metaSequence.hasRandomAccessIterator(), hasRandomAccessIterator);
|
QCOMPARE(metaSequence.hasRandomAccessIterator(), hasRandomAccessIterator);
|
||||||
QCOMPARE(metaSequence.canInsertElementAtIterator(), canInsertAtIterator);
|
QCOMPARE(metaSequence.canInsertValueAtIterator(), canInsertAtIterator);
|
||||||
QCOMPARE(metaSequence.canEraseElementAtIterator(), canEraseAtIterator);
|
QCOMPARE(metaSequence.canEraseValueAtIterator(), canEraseAtIterator);
|
||||||
QCOMPARE(metaSequence.isOrdered(), isOrdered);
|
QCOMPARE(metaSequence.isOrdered(), isOrdered);
|
||||||
|
|
||||||
QVariant var1(metaType);
|
QVariant var1(metaType);
|
||||||
@ -277,40 +277,40 @@ void tst_QMetaContainer::testSequence()
|
|||||||
const qsizetype size = metaSequence.size(container);
|
const qsizetype size = metaSequence.size(container);
|
||||||
|
|
||||||
// var1 is invalid, and our sets do not contain an invalid value so far.
|
// var1 is invalid, and our sets do not contain an invalid value so far.
|
||||||
metaSequence.addElement(container, var1.constData());
|
metaSequence.addValue(container, var1.constData());
|
||||||
QCOMPARE(metaSequence.size(container), size + 1);
|
QCOMPARE(metaSequence.size(container), size + 1);
|
||||||
if (canRemove) {
|
if (canRemove) {
|
||||||
metaSequence.removeElement(container);
|
metaSequence.removeValue(container);
|
||||||
QCOMPARE(metaSequence.size(container), size);
|
QCOMPARE(metaSequence.size(container), size);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
metaSequence.addElement(container, var1.constData());
|
metaSequence.addValue(container, var1.constData());
|
||||||
if (canRemove)
|
if (canRemove)
|
||||||
metaSequence.removeElement(container);
|
metaSequence.removeValue(container);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isIndexed) {
|
if (isIndexed) {
|
||||||
QVERIFY(hasSize);
|
QVERIFY(hasSize);
|
||||||
const qsizetype size = metaSequence.size(container);
|
const qsizetype size = metaSequence.size(container);
|
||||||
for (qsizetype i = 0; i < size; ++i) {
|
for (qsizetype i = 0; i < size; ++i) {
|
||||||
metaSequence.elementAtIndex(container, i, var1.data());
|
metaSequence.valueAtIndex(container, i, var1.data());
|
||||||
metaSequence.elementAtIndex(container, size - i - 1, var2.data());
|
metaSequence.valueAtIndex(container, size - i - 1, var2.data());
|
||||||
|
|
||||||
metaSequence.setElementAtIndex(container, i, var2.constData());
|
metaSequence.setValueAtIndex(container, i, var2.constData());
|
||||||
metaSequence.setElementAtIndex(container, size - i - 1, var1.constData());
|
metaSequence.setValueAtIndex(container, size - i - 1, var1.constData());
|
||||||
|
|
||||||
metaSequence.elementAtIndex(container, i, var3.data());
|
metaSequence.valueAtIndex(container, i, var3.data());
|
||||||
QCOMPARE(var3, var2);
|
QCOMPARE(var3, var2);
|
||||||
|
|
||||||
metaSequence.elementAtIndex(container, size - i - 1, var3.data());
|
metaSequence.valueAtIndex(container, size - i - 1, var3.data());
|
||||||
QCOMPARE(var3, var1);
|
QCOMPARE(var3, var1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
QVERIFY(metaSequence.hasIterator());
|
QVERIFY(metaSequence.hasIterator());
|
||||||
QVERIFY(metaSequence.hasConstIterator());
|
QVERIFY(metaSequence.hasConstIterator());
|
||||||
QVERIFY(metaSequence.canGetElementAtIterator());
|
QVERIFY(metaSequence.canGetValueAtIterator());
|
||||||
QVERIFY(metaSequence.canGetElementAtConstIterator());
|
QVERIFY(metaSequence.canGetValueAtConstIterator());
|
||||||
|
|
||||||
void *it = metaSequence.begin(container);
|
void *it = metaSequence.begin(container);
|
||||||
void *end = metaSequence.end(container);
|
void *end = metaSequence.end(container);
|
||||||
@ -330,12 +330,12 @@ void tst_QMetaContainer::testSequence()
|
|||||||
qsizetype count = 0;
|
qsizetype count = 0;
|
||||||
for (; !metaSequence.compareIterator(it, end);
|
for (; !metaSequence.compareIterator(it, end);
|
||||||
metaSequence.advanceIterator(it, 1), metaSequence.advanceConstIterator(constIt, 1)) {
|
metaSequence.advanceIterator(it, 1), metaSequence.advanceConstIterator(constIt, 1)) {
|
||||||
metaSequence.elementAtIterator(it, var1.data());
|
metaSequence.valueAtIterator(it, var1.data());
|
||||||
if (isIndexed) {
|
if (isIndexed) {
|
||||||
metaSequence.elementAtIndex(container, count, var2.data());
|
metaSequence.valueAtIndex(container, count, var2.data());
|
||||||
QCOMPARE(var1, var2);
|
QCOMPARE(var1, var2);
|
||||||
}
|
}
|
||||||
metaSequence.elementAtConstIterator(constIt, var3.data());
|
metaSequence.valueAtConstIterator(constIt, var3.data());
|
||||||
QCOMPARE(var3, var1);
|
QCOMPARE(var3, var1);
|
||||||
++count;
|
++count;
|
||||||
}
|
}
|
||||||
@ -348,16 +348,16 @@ void tst_QMetaContainer::testSequence()
|
|||||||
metaSequence.destroyConstIterator(constIt);
|
metaSequence.destroyConstIterator(constIt);
|
||||||
metaSequence.destroyConstIterator(constEnd);
|
metaSequence.destroyConstIterator(constEnd);
|
||||||
|
|
||||||
if (metaSequence.canSetElementAtIterator()) {
|
if (metaSequence.canSetValueAtIterator()) {
|
||||||
void *it = metaSequence.begin(container);
|
void *it = metaSequence.begin(container);
|
||||||
void *end = metaSequence.end(container);
|
void *end = metaSequence.end(container);
|
||||||
QVERIFY(it);
|
QVERIFY(it);
|
||||||
QVERIFY(end);
|
QVERIFY(end);
|
||||||
|
|
||||||
for (; !metaSequence.compareIterator(it, end); metaSequence.advanceIterator(it, 1)) {
|
for (; !metaSequence.compareIterator(it, end); metaSequence.advanceIterator(it, 1)) {
|
||||||
metaSequence.elementAtIterator(it, var1.data());
|
metaSequence.valueAtIterator(it, var1.data());
|
||||||
metaSequence.setElementAtIterator(it, var2.constData());
|
metaSequence.setValueAtIterator(it, var2.constData());
|
||||||
metaSequence.elementAtIterator(it, var3.data());
|
metaSequence.valueAtIterator(it, var3.data());
|
||||||
QCOMPARE(var2, var3);
|
QCOMPARE(var2, var3);
|
||||||
var2 = var1;
|
var2 = var1;
|
||||||
}
|
}
|
||||||
@ -394,12 +394,12 @@ void tst_QMetaContainer::testSequence()
|
|||||||
metaSequence.advanceConstIterator(constIt, -1);
|
metaSequence.advanceConstIterator(constIt, -1);
|
||||||
--count;
|
--count;
|
||||||
|
|
||||||
metaSequence.elementAtIterator(it, var1.data());
|
metaSequence.valueAtIterator(it, var1.data());
|
||||||
if (isIndexed) {
|
if (isIndexed) {
|
||||||
metaSequence.elementAtIndex(container, count - size, var2.data());
|
metaSequence.valueAtIndex(container, count - size, var2.data());
|
||||||
QCOMPARE(var1, var2);
|
QCOMPARE(var1, var2);
|
||||||
}
|
}
|
||||||
metaSequence.elementAtConstIterator(constIt, var3.data());
|
metaSequence.valueAtConstIterator(constIt, var3.data());
|
||||||
QCOMPARE(var3, var1);
|
QCOMPARE(var3, var1);
|
||||||
} while (!metaSequence.compareIterator(it, end));
|
} while (!metaSequence.compareIterator(it, end));
|
||||||
|
|
||||||
@ -419,13 +419,13 @@ void tst_QMetaContainer::testSequence()
|
|||||||
const qsizetype size = metaSequence.diffIterator(end, it);
|
const qsizetype size = metaSequence.diffIterator(end, it);
|
||||||
metaSequence.destroyIterator(end);
|
metaSequence.destroyIterator(end);
|
||||||
|
|
||||||
metaSequence.insertElementAtIterator(container, it, var1.constData());
|
metaSequence.insertValueAtIterator(container, it, var1.constData());
|
||||||
metaSequence.destroyIterator(it);
|
metaSequence.destroyIterator(it);
|
||||||
it = metaSequence.begin(container);
|
it = metaSequence.begin(container);
|
||||||
metaSequence.insertElementAtIterator(container, it, var2.constData());
|
metaSequence.insertValueAtIterator(container, it, var2.constData());
|
||||||
metaSequence.destroyIterator(it);
|
metaSequence.destroyIterator(it);
|
||||||
it = metaSequence.begin(container);
|
it = metaSequence.begin(container);
|
||||||
metaSequence.insertElementAtIterator(container, it, var3.constData());
|
metaSequence.insertValueAtIterator(container, it, var3.constData());
|
||||||
|
|
||||||
metaSequence.destroyIterator(it);
|
metaSequence.destroyIterator(it);
|
||||||
|
|
||||||
@ -437,13 +437,13 @@ void tst_QMetaContainer::testSequence()
|
|||||||
if (metaSequence.isOrdered()) {
|
if (metaSequence.isOrdered()) {
|
||||||
QCOMPARE(newSize, size + 3);
|
QCOMPARE(newSize, size + 3);
|
||||||
QVariant var4(metaType);
|
QVariant var4(metaType);
|
||||||
metaSequence.elementAtIterator(it, var4.data());
|
metaSequence.valueAtIterator(it, var4.data());
|
||||||
QCOMPARE(var4, var3);
|
QCOMPARE(var4, var3);
|
||||||
metaSequence.advanceIterator(it, 1);
|
metaSequence.advanceIterator(it, 1);
|
||||||
metaSequence.elementAtIterator(it, var4.data());
|
metaSequence.valueAtIterator(it, var4.data());
|
||||||
QCOMPARE(var4, var2);
|
QCOMPARE(var4, var2);
|
||||||
metaSequence.advanceIterator(it, 1);
|
metaSequence.advanceIterator(it, 1);
|
||||||
metaSequence.elementAtIterator(it, var4.data());
|
metaSequence.valueAtIterator(it, var4.data());
|
||||||
QCOMPARE(var4, var1);
|
QCOMPARE(var4, var1);
|
||||||
} else {
|
} else {
|
||||||
QVERIFY(newSize >= size);
|
QVERIFY(newSize >= size);
|
||||||
@ -453,7 +453,7 @@ void tst_QMetaContainer::testSequence()
|
|||||||
for (int i = 0; i < newSize; ++i) {
|
for (int i = 0; i < newSize; ++i) {
|
||||||
metaSequence.destroyIterator(it);
|
metaSequence.destroyIterator(it);
|
||||||
it = metaSequence.begin(container);
|
it = metaSequence.begin(container);
|
||||||
metaSequence.eraseElementAtIterator(container, it);
|
metaSequence.eraseValueAtIterator(container, it);
|
||||||
}
|
}
|
||||||
|
|
||||||
metaSequence.destroyIterator(it);
|
metaSequence.destroyIterator(it);
|
||||||
@ -462,9 +462,9 @@ void tst_QMetaContainer::testSequence()
|
|||||||
end = metaSequence.end(container);
|
end = metaSequence.end(container);
|
||||||
QVERIFY(metaSequence.compareIterator(it, end));
|
QVERIFY(metaSequence.compareIterator(it, end));
|
||||||
|
|
||||||
metaSequence.addElement(container, var1.constData());
|
metaSequence.addValue(container, var1.constData());
|
||||||
metaSequence.addElement(container, var2.constData());
|
metaSequence.addValue(container, var2.constData());
|
||||||
metaSequence.addElement(container, var3.constData());
|
metaSequence.addValue(container, var3.constData());
|
||||||
}
|
}
|
||||||
|
|
||||||
metaSequence.destroyIterator(end);
|
metaSequence.destroyIterator(end);
|
||||||
|
@ -4538,7 +4538,7 @@ void tst_QVariant::shouldDeleteVariantDataWorksForSequential()
|
|||||||
[](const void *, QtMetaContainerPrivate::QMetaSequenceInterface::Position) -> void* {
|
[](const void *, QtMetaContainerPrivate::QMetaSequenceInterface::Position) -> void* {
|
||||||
return nullptr;
|
return nullptr;
|
||||||
};
|
};
|
||||||
metaSequence.addElementFn = [](void *, const void *) {};
|
metaSequence.addValueFn = [](void *, const void *) {};
|
||||||
metaSequence.advanceConstIteratorFn = [](void *, qsizetype) {};
|
metaSequence.advanceConstIteratorFn = [](void *, qsizetype) {};
|
||||||
metaSequence.destroyConstIteratorFn = [](const void *){};
|
metaSequence.destroyConstIteratorFn = [](const void *){};
|
||||||
metaSequence.compareConstIteratorFn = [](const void *, const void *) {
|
metaSequence.compareConstIteratorFn = [](const void *, const void *) {
|
||||||
@ -4548,11 +4548,11 @@ void tst_QVariant::shouldDeleteVariantDataWorksForSequential()
|
|||||||
metaSequence.diffConstIteratorFn = [](const void *, const void *) -> qsizetype {
|
metaSequence.diffConstIteratorFn = [](const void *, const void *) -> qsizetype {
|
||||||
return 0;
|
return 0;
|
||||||
};
|
};
|
||||||
metaSequence.elementAtIndexFn = [](const void *, qsizetype, void *dataPtr) -> void {
|
metaSequence.valueAtIndexFn = [](const void *, qsizetype, void *dataPtr) -> void {
|
||||||
MyType mytype {1, "eins"};
|
MyType mytype {1, "eins"};
|
||||||
*static_cast<MyType *>(dataPtr) = mytype;
|
*static_cast<MyType *>(dataPtr) = mytype;
|
||||||
};
|
};
|
||||||
metaSequence.elementAtConstIteratorFn = [](const void *, void *dataPtr) -> void {
|
metaSequence.valueAtConstIteratorFn = [](const void *, void *dataPtr) -> void {
|
||||||
MyType mytype {2, "zwei"};
|
MyType mytype {2, "zwei"};
|
||||||
*static_cast<MyType *>(dataPtr) = mytype;
|
*static_cast<MyType *>(dataPtr) = mytype;
|
||||||
};
|
};
|
||||||
@ -4696,8 +4696,8 @@ void tst_QVariant::sequentialIterableAppend()
|
|||||||
auto asIterable = variant.value<QSequentialIterable>();
|
auto asIterable = variant.value<QSequentialIterable>();
|
||||||
const int i = 3, j = 4;
|
const int i = 3, j = 4;
|
||||||
void *mutableIterable = const_cast<void *>(asIterable.constIterable());
|
void *mutableIterable = const_cast<void *>(asIterable.constIterable());
|
||||||
asIterable.metaSequence().addElement(mutableIterable, &i);
|
asIterable.metaSequence().addValue(mutableIterable, &i);
|
||||||
asIterable.metaSequence().addElement(mutableIterable, &j);
|
asIterable.metaSequence().addValue(mutableIterable, &j);
|
||||||
QCOMPARE(variant.value<QList<int>>(), QList<int> ({ 1, 2, 3, 4 }));
|
QCOMPARE(variant.value<QList<int>>(), QList<int> ({ 1, 2, 3, 4 }));
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
@ -4708,8 +4708,8 @@ void tst_QVariant::sequentialIterableAppend()
|
|||||||
QByteArray qba1 {"goodbye"};
|
QByteArray qba1 {"goodbye"};
|
||||||
QByteArray qba2 { "moon" };
|
QByteArray qba2 { "moon" };
|
||||||
void *mutableIterable = const_cast<void *>(asIterable.constIterable());
|
void *mutableIterable = const_cast<void *>(asIterable.constIterable());
|
||||||
asIterable.metaSequence().addElement(mutableIterable, &qba1);
|
asIterable.metaSequence().addValue(mutableIterable, &qba1);
|
||||||
asIterable.metaSequence().addElement(mutableIterable, &qba2);
|
asIterable.metaSequence().addValue(mutableIterable, &qba2);
|
||||||
QSet<QByteArray> reference { "hello", "world", "goodbye", "moon" };
|
QSet<QByteArray> reference { "hello", "world", "goodbye", "moon" };
|
||||||
QCOMPARE(variant.value<QSet<QByteArray>>(), reference);
|
QCOMPARE(variant.value<QSet<QByteArray>>(), reference);
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user