aboutsummaryrefslogtreecommitdiffstats
path: root/src/lib/corelib/language/filetags.cpp
diff options
context:
space:
mode:
authorChristian Kandeler <christian.kandeler@qt.io>2016-11-01 10:00:31 +0100
committerChristian Kandeler <christian.kandeler@qt.io>2016-11-10 09:30:19 +0000
commita96116df6e01e131867f406695300959c9872527 (patch)
tree86997be854fff5f078f1d4f5cb82ae7b53e074bd /src/lib/corelib/language/filetags.cpp
parent03a0a3d9fe95aec346b0934ec685e97fb4827c31 (diff)
Use string sharing when serializing file tags
On my machine, the on-disk build graph of a freshly resolved Qt Creator super project goes down by 12% with this patch. Change-Id: Ic86b4ba31769d7d4af407b24a0ee9845cf943a79 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
Diffstat (limited to 'src/lib/corelib/language/filetags.cpp')
-rw-r--r--src/lib/corelib/language/filetags.cpp34
1 files changed, 12 insertions, 22 deletions
diff --git a/src/lib/corelib/language/filetags.cpp b/src/lib/corelib/language/filetags.cpp
index 47b6274a5..c451a24b5 100644
--- a/src/lib/corelib/language/filetags.cpp
+++ b/src/lib/corelib/language/filetags.cpp
@@ -40,6 +40,8 @@
#include "filetags.h"
#include <QStringList>
+#include <tools/persistence.h>
+
namespace qbs {
namespace Internal {
@@ -75,6 +77,16 @@ bool FileTags::matches(const FileTags &other) const
return false;
}
+void FileTags::store(PersistentPool &pool) const
+{
+ pool.storeStringList(toStringList());
+}
+
+void FileTags::load(PersistentPool &pool)
+{
+ *this = fromStringList(pool.idLoadStringList());
+}
+
LogWriter operator <<(LogWriter w, const FileTags &tags)
{
bool firstLoop = true;
@@ -90,27 +102,5 @@ LogWriter operator <<(LogWriter w, const FileTags &tags)
return w;
}
-QDataStream &operator >>(QDataStream &s, FileTags &tags)
-{
- int i;
- s >> i;
- tags.clear();
- tags.reserve(i);
- QVariant v;
- while (--i >= 0) {
- s >> v;
- tags += FileTag::fromSetting(v);
- }
- return s;
-}
-
-QDataStream &operator <<(QDataStream &s, const FileTags &tags)
-{
- s << tags.count();
- foreach (const FileTag &ft, tags)
- s << ft.toSetting();
- return s;
-}
-
} // namespace Internal
} // namespace qbs