QMovableArrayOps::Inserter cleanup [3/3]: cut out the where middle-man

It turned out that we've been maintaining both displaceFrom and its
copy, `where`, in parallel.

This is not needed, so only maintain displaceFrom.

Pick-to: 6.9 6.8 6.5
Change-Id: I8c13420ae3fd284e362c4dd1f1b06d2847780c86
Reviewed-by: Ahmad Samir <a.samirh78@gmail.com>
This commit is contained in:
Marc Mutz 2025-03-04 14:59:48 +01:00 committed by Ahmad Samir
parent 2198cdc406
commit f18e8cebfc

View File

@ -640,8 +640,8 @@ public:
const qsizetype nInserts = 0;
const size_t bytes;
void verifyPost(T *where)
{ Q_ASSERT(where == displaceTo); }
void verifyPost()
{ Q_ASSERT(displaceFrom == displaceTo); }
explicit Inserter(QArrayDataPointer<T> *d, qsizetype pos, qsizetype n)
: data{d},
@ -666,35 +666,28 @@ public:
void insertRange(const T *source, qsizetype n)
{
T *where = displaceFrom;
while (n--) {
new (where) T(*source);
++where;
new (displaceFrom) T(*source);
++source;
++displaceFrom;
}
verifyPost(where);
verifyPost();
}
void insertFill(const T &t, qsizetype n)
{
T *where = displaceFrom;
while (n--) {
new (where) T(t);
++where;
new (displaceFrom) T(t);
++displaceFrom;
}
verifyPost(where);
verifyPost();
}
void insertOne(T &&t)
{
T *where = displaceFrom;
new (where) T(std::move(t));
new (displaceFrom) T(std::move(t));
++displaceFrom;
verifyPost(++where);
verifyPost();
}
};