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