diff options
author | Marc Mutz <marc.mutz@kdab.com> | 2012-09-19 17:50:42 +0200 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2012-09-21 02:44:22 +0200 |
commit | cbf447069cfeb799ff5e09902be065d77f2e7707 (patch) | |
tree | d5aa6a03a62a78dae0f2de3f3845595b6c0abaff | |
parent | 1f576cb6abd4bdcf351e8803a90980426e49e57b (diff) |
qmake: add ProStringList::join(QChar)
Same reasoning as for 68e04c3ac148bcbe71f2deeb7288563f6cdbcab5 applies.
Adding the overload was easier than to teach a Perl script to distinguish
between QStringList and ProStringList instances...
Change-Id: I6de6ecf21fdad135ac213b5c794927a9bc120a92
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
-rw-r--r-- | qmake/library/proitems.cpp | 27 | ||||
-rw-r--r-- | qmake/library/proitems.h | 1 |
2 files changed, 20 insertions, 8 deletions
diff --git a/qmake/library/proitems.cpp b/qmake/library/proitems.cpp index ba02c727b1..4fb3c0326b 100644 --- a/qmake/library/proitems.cpp +++ b/qmake/library/proitems.cpp @@ -345,30 +345,41 @@ QTextStream &operator<<(QTextStream &t, const ProString &str) return t; } -QString ProStringList::join(const QString &sep) const +static QString ProStringList_join(const ProStringList &this_, const QChar *sep, const size_t sepSize) { int totalLength = 0; - const int sz = size(); + const int sz = this_.size(); for (int i = 0; i < sz; ++i) - totalLength += at(i).size(); + totalLength += this_.at(i).size(); if (sz) - totalLength += sep.size() * (sz - 1); + totalLength += sepSize * (sz - 1); QString res(totalLength, Qt::Uninitialized); QChar *ptr = (QChar *)res.constData(); for (int i = 0; i < sz; ++i) { if (i) { - memcpy(ptr, sep.constData(), sep.size() * 2); - ptr += sep.size(); + memcpy(ptr, sep, sepSize * sizeof(QChar)); + ptr += sepSize; } - memcpy(ptr, at(i).constData(), at(i).size() * 2); - ptr += at(i).size(); + const ProString &str = this_.at(i); + memcpy(ptr, str.constData(), str.size() * sizeof(QChar)); + ptr += str.size(); } return res; } +QString ProStringList::join(const QString &sep) const +{ + return ProStringList_join(*this, sep.constData(), sep.size()); +} + +QString ProStringList::join(QChar sep) const +{ + return ProStringList_join(*this, &sep, 1); +} + void ProStringList::removeAll(const ProString &str) { for (int i = size(); --i >= 0; ) diff --git a/qmake/library/proitems.h b/qmake/library/proitems.h index 23dc86d8d3..79ee453119 100644 --- a/qmake/library/proitems.h +++ b/qmake/library/proitems.h @@ -245,6 +245,7 @@ public: int length() const { return size(); } QString join(const QString &sep) const; + QString join(QChar sep) const; void removeAll(const ProString &str); void removeAll(const char *str); |