summaryrefslogtreecommitdiffstats
path: root/qmake
diff options
context:
space:
mode:
authorMarc Mutz <marc.mutz@kdab.com>2012-09-19 17:50:42 +0200
committerThe Qt Project <gerrit-noreply@qt-project.org>2012-09-21 02:44:22 +0200
commitcbf447069cfeb799ff5e09902be065d77f2e7707 (patch)
treed5aa6a03a62a78dae0f2de3f3845595b6c0abaff /qmake
parent1f576cb6abd4bdcf351e8803a90980426e49e57b (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>
Diffstat (limited to 'qmake')
-rw-r--r--qmake/library/proitems.cpp27
-rw-r--r--qmake/library/proitems.h1
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);