diff options
author | Christian Kandeler <christian.kandeler@qt.io> | 2016-11-01 10:00:31 +0100 |
---|---|---|
committer | Christian Kandeler <christian.kandeler@qt.io> | 2016-11-10 09:30:19 +0000 |
commit | a96116df6e01e131867f406695300959c9872527 (patch) | |
tree | 86997be854fff5f078f1d4f5cb82ae7b53e074bd /src/lib/corelib/language/filetags.cpp | |
parent | 03a0a3d9fe95aec346b0934ec685e97fb4827c31 (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.cpp | 34 |
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 |