core: Replace QList by std::vector in the storage API
authorManuel Nickschas <sputnick@quassel-irc.org>
Fri, 30 Aug 2019 19:36:09 +0000 (21:36 +0200)
committerManuel Nickschas <sputnick@quassel-irc.org>
Fri, 30 Aug 2019 22:34:29 +0000 (00:34 +0200)
QList is inefficient and deprecated; also Qt containers have
issues with ranged-for and STL algorithms. Use std::vector instead in
the storage API and fix affected code.

Modernize some affected bits by replacing weird loops with STL
algorithms.

12 files changed:
src/core/abstractsqlstorage.cpp
src/core/abstractsqlstorage.h
src/core/core.h
src/core/corebacklogmanager.cpp
src/core/corebuffersyncer.cpp
src/core/coresession.cpp
src/core/coresession.h
src/core/postgresqlstorage.cpp
src/core/postgresqlstorage.h
src/core/sqlitestorage.cpp
src/core/sqlitestorage.h
src/core/storage.h

index bc56ef2..d43f59e 100644 (file)
@@ -183,13 +183,13 @@ QString AbstractSqlStorage::queryString(const QString& queryName, int version)
     return query.trimmed();
 }
 
-QList<AbstractSqlStorage::SqlQueryResource> AbstractSqlStorage::setupQueries()
+std::vector<AbstractSqlStorage::SqlQueryResource> AbstractSqlStorage::setupQueries()
 {
-    QList<SqlQueryResource> queries;
+    std::vector<SqlQueryResource> queries;
     // The current schema is stored in the root folder, including setup scripts.
     QDir dir = QDir(QString(":/SQL/%1/").arg(displayName()));
     foreach (QFileInfo fileInfo, dir.entryInfoList(QStringList() << "setup*", QDir::NoFilter, QDir::Name)) {
-        queries << SqlQueryResource(queryString(fileInfo.baseName()), fileInfo.baseName());
+        queries.emplace_back(queryString(fileInfo.baseName()), fileInfo.baseName());
     }
     return queries;
 }
@@ -221,13 +221,13 @@ bool AbstractSqlStorage::setup(const QVariantMap& settings, const QProcessEnviro
     return success;
 }
 
-QList<AbstractSqlStorage::SqlQueryResource> AbstractSqlStorage::upgradeQueries(int version)
+std::vector<AbstractSqlStorage::SqlQueryResource> AbstractSqlStorage::upgradeQueries(int version)
 {
-    QList<SqlQueryResource> queries;
+    std::vector<SqlQueryResource> queries;
     // Upgrade queries are stored in the 'version/##' subfolders.
     QDir dir = QDir(QString(":/SQL/%1/version/%2/").arg(displayName()).arg(version));
     foreach (QFileInfo fileInfo, dir.entryInfoList(QStringList() << "upgrade*", QDir::NoFilter, QDir::Name)) {
-        queries << SqlQueryResource(queryString(fileInfo.baseName(), version), fileInfo.baseName());
+        queries.emplace_back(queryString(fileInfo.baseName(), version), fileInfo.baseName());
     }
     return queries;
 }
index a0bdd23..e43188a 100644 (file)
@@ -21,6 +21,7 @@
 #pragma once
 
 #include <memory>
+#include <vector>
 
 #include <QHash>
 #include <QMutex>
@@ -95,7 +96,7 @@ protected:
      *
      * @return List of SQL query strings and filenames
      */
-    QList<SqlQueryResource> setupQueries();
+    std::vector<SqlQueryResource> setupQueries();
 
     /**
      * Gets the collection of SQL upgrade queries and filenames for a given schema version
@@ -103,7 +104,7 @@ protected:
      * @param ver  SQL schema version
      * @return List of SQL query strings and filenames
      */
-    QList<SqlQueryResource> upgradeQueries(int ver);
+    std::vector<SqlQueryResource> upgradeQueries(int ver);
     bool upgradeDb();
 
     bool watchQuery(QSqlQuery& query);
index b2c6c1e..2df1947 100644 (file)
@@ -194,7 +194,7 @@ public:
 
     static void removeIdentity(UserId user, IdentityId identityId) { instance()->_storage->removeIdentity(user, identityId); }
 
-    static QList<CoreIdentity> identities(UserId user) { return instance()->_storage->identities(user); }
+    static std::vector<CoreIdentity> identities(UserId user) { return instance()->_storage->identities(user); }
 
     //! Create a Network in the Storage and store it's Id in the given NetworkInfo
     /** \note This method is thredsafe.
@@ -230,9 +230,9 @@ public:
     /** \note This method is thredsafe.
      *
      *  \param user        The core user
-     *  \return QList<NetworkInfo>.
+     *  \return std::vector<NetworkInfo>.
      */
-    static inline QList<NetworkInfo> networks(UserId user) { return instance()->_storage->networks(user); }
+    static inline std::vector<NetworkInfo> networks(UserId user) { return instance()->_storage->networks(user); }
 
     //! Get a list of Networks to restore
     /** Return a list of networks the user was connected at the time of core shutdown
@@ -240,7 +240,7 @@ public:
      *
      *  \param user  The User Id in question
      */
-    static inline QList<NetworkId> connectedNetworks(UserId user) { return instance()->_storage->connectedNetworks(user); }
+    static inline std::vector<NetworkId> connectedNetworks(UserId user) { return instance()->_storage->connectedNetworks(user); }
 
     //! Update the connected state of a network
     /** \note This method is threadsafe
@@ -407,7 +407,7 @@ public:
      *  \param limit    if != -1 limit the returned list to a max of \limit entries
      *  \return The requested list of messages
      */
-    static inline QList<Message> requestMsgs(UserId user, BufferId bufferId, MsgId first = -1, MsgId last = -1, int limit = -1)
+    static inline std::vector<Message> requestMsgs(UserId user, BufferId bufferId, MsgId first = -1, MsgId last = -1, int limit = -1)
     {
         return instance()->_storage->requestMsgs(user, bufferId, first, last, limit);
     }
@@ -420,7 +420,7 @@ public:
      *  \param type     The Message::Types that should be returned
      *  \return The requested list of messages
      */
-    static inline QList<Message> requestMsgsFiltered(UserId user,
+    static inline std::vector<Message> requestMsgsFiltered(UserId user,
                                                      BufferId bufferId,
                                                      MsgId first = -1,
                                                      MsgId last = -1,
@@ -437,7 +437,7 @@ public:
      *  \param limit    Max amount of messages
      *  \return The requested list of messages
      */
-    static inline QList<Message> requestAllMsgs(UserId user, MsgId first = -1, MsgId last = -1, int limit = -1)
+    static inline std::vector<Message> requestAllMsgs(UserId user, MsgId first = -1, MsgId last = -1, int limit = -1)
     {
         return instance()->_storage->requestAllMsgs(user, first, last, limit);
     }
@@ -449,7 +449,7 @@ public:
      *  \param type     The Message::Types that should be returned
      *  \return The requested list of messages
      */
-    static inline QList<Message> requestAllMsgsFiltered(UserId user,
+    static inline std::vector<Message> requestAllMsgsFiltered(UserId user,
                                                         MsgId first = -1,
                                                         MsgId last = -1,
                                                         int limit = -1,
@@ -466,7 +466,7 @@ public:
      *  \param user  The user whose buffers we request
      *  \return A list of the BufferInfos for all buffers as requested
      */
-    static inline QList<BufferInfo> requestBuffers(UserId user) { return instance()->_storage->requestBuffers(user); }
+    static inline std::vector<BufferInfo> requestBuffers(UserId user) { return instance()->_storage->requestBuffers(user); }
 
     //! Request a list of BufferIds for a given NetworkId
     /** \note This method is threadsafe.
@@ -475,7 +475,7 @@ public:
      *  \param networkId  The NetworkId of the network in question
      *  \return List of BufferIds belonging to the Network
      */
-    static inline QList<BufferId> requestBufferIdsForNetwork(UserId user, NetworkId networkId)
+    static inline std::vector<BufferId> requestBufferIdsForNetwork(UserId user, NetworkId networkId)
     {
         return instance()->_storage->requestBufferIdsForNetwork(user, networkId);
     }
index d72aa71..deb2ac9 100644 (file)
@@ -20,6 +20,9 @@
 
 #include "corebacklogmanager.h"
 
+#include <algorithm>
+#include <iterator>
+
 #include <QDebug>
 
 #include "core.h"
@@ -33,23 +36,19 @@ CoreBacklogManager::CoreBacklogManager(CoreSession* coreSession)
 QVariantList CoreBacklogManager::requestBacklog(BufferId bufferId, MsgId first, MsgId last, int limit, int additional)
 {
     QVariantList backlog;
-    QList<Message> msgList;
-    msgList = Core::requestMsgs(coreSession()->user(), bufferId, first, last, limit);
-
-    QList<Message>::const_iterator msgIter = msgList.constBegin();
-    QList<Message>::const_iterator msgListEnd = msgList.constEnd();
-    while (msgIter != msgListEnd) {
-        backlog << qVariantFromValue(*msgIter);
-        ++msgIter;
-    }
+    auto msgList = Core::requestMsgs(coreSession()->user(), bufferId, first, last, limit);
+
+    std::transform(msgList.cbegin(), msgList.cend(), std::back_inserter(backlog), [](auto&& msg) {
+        return QVariant::fromValue(msg);
+    });
 
     if (additional && limit != 0) {
         MsgId oldestMessage = first;
-        if (!msgList.isEmpty()) {
-            if (msgList.first().msgId() < msgList.last().msgId())
-                oldestMessage = msgList.first().msgId();
+        if (!msgList.empty()) {
+            if (msgList.front().msgId() < msgList.back().msgId())
+                oldestMessage = msgList.front().msgId();
             else
-                oldestMessage = msgList.last().msgId();
+                oldestMessage = msgList.back().msgId();
         }
 
         if (first != -1) {
@@ -63,12 +62,9 @@ QVariantList CoreBacklogManager::requestBacklog(BufferId bufferId, MsgId first,
         // that is, if the list of messages is not truncated by the limit
         if (last == oldestMessage) {
             msgList = Core::requestMsgs(coreSession()->user(), bufferId, -1, last, additional);
-            msgIter = msgList.constBegin();
-            msgListEnd = msgList.constEnd();
-            while (msgIter != msgListEnd) {
-                backlog << qVariantFromValue(*msgIter);
-                ++msgIter;
-            }
+            std::transform(msgList.cbegin(), msgList.cend(), std::back_inserter(backlog), [](auto&& msg) {
+                return QVariant::fromValue(msg);
+            });
         }
     }
 
@@ -78,23 +74,19 @@ QVariantList CoreBacklogManager::requestBacklog(BufferId bufferId, MsgId first,
 QVariantList CoreBacklogManager::requestBacklogFiltered(BufferId bufferId, MsgId first, MsgId last, int limit, int additional, int type, int flags)
 {
     QVariantList backlog;
-    QList<Message> msgList;
-    msgList = Core::requestMsgsFiltered(coreSession()->user(), bufferId, first, last, limit, Message::Types{type}, Message::Flags{flags});
-
-    QList<Message>::const_iterator msgIter = msgList.constBegin();
-    QList<Message>::const_iterator msgListEnd = msgList.constEnd();
-    while (msgIter != msgListEnd) {
-        backlog << qVariantFromValue(*msgIter);
-        ++msgIter;
-    }
+    auto msgList = Core::requestMsgsFiltered(coreSession()->user(), bufferId, first, last, limit, Message::Types{type}, Message::Flags{flags});
+
+    std::transform(msgList.cbegin(), msgList.cend(), std::back_inserter(backlog), [](auto&& msg) {
+        return QVariant::fromValue(msg);
+    });
 
     if (additional && limit != 0) {
         MsgId oldestMessage = first;
-        if (!msgList.isEmpty()) {
-            if (msgList.first().msgId() < msgList.last().msgId())
-                oldestMessage = msgList.first().msgId();
+        if (!msgList.empty()) {
+            if (msgList.front().msgId() < msgList.back().msgId())
+                oldestMessage = msgList.front().msgId();
             else
-                oldestMessage = msgList.last().msgId();
+                oldestMessage = msgList.back().msgId();
         }
 
         if (first != -1) {
@@ -108,12 +100,9 @@ QVariantList CoreBacklogManager::requestBacklogFiltered(BufferId bufferId, MsgId
         // that is, if the list of messages is not truncated by the limit
         if (last == oldestMessage) {
             msgList = Core::requestMsgsFiltered(coreSession()->user(), bufferId, -1, last, additional, Message::Types{type}, Message::Flags{flags});
-            msgIter = msgList.constBegin();
-            msgListEnd = msgList.constEnd();
-            while (msgIter != msgListEnd) {
-                backlog << qVariantFromValue(*msgIter);
-                ++msgIter;
-            }
+            std::transform(msgList.cbegin(), msgList.cend(), std::back_inserter(backlog), [](auto&& msg) {
+                return QVariant::fromValue(msg);
+            });
         }
     }
 
@@ -123,15 +112,11 @@ QVariantList CoreBacklogManager::requestBacklogFiltered(BufferId bufferId, MsgId
 QVariantList CoreBacklogManager::requestBacklogAll(MsgId first, MsgId last, int limit, int additional)
 {
     QVariantList backlog;
-    QList<Message> msgList;
-    msgList = Core::requestAllMsgs(coreSession()->user(), first, last, limit);
-
-    QList<Message>::const_iterator msgIter = msgList.constBegin();
-    QList<Message>::const_iterator msgListEnd = msgList.constEnd();
-    while (msgIter != msgListEnd) {
-        backlog << qVariantFromValue(*msgIter);
-        ++msgIter;
-    }
+    auto msgList = Core::requestAllMsgs(coreSession()->user(), first, last, limit);
+
+    std::transform(msgList.cbegin(), msgList.cend(), std::back_inserter(backlog), [](auto&& msg) {
+        return QVariant::fromValue(msg);
+    });
 
     if (additional) {
         if (first != -1) {
@@ -139,20 +124,17 @@ QVariantList CoreBacklogManager::requestBacklogAll(MsgId first, MsgId last, int
         }
         else {
             last = -1;
-            if (!msgList.isEmpty()) {
-                if (msgList.first().msgId() < msgList.last().msgId())
-                    last = msgList.first().msgId();
+            if (!msgList.empty()) {
+                if (msgList.front().msgId() < msgList.back().msgId())
+                    last = msgList.front().msgId();
                 else
-                    last = msgList.last().msgId();
+                    last = msgList.back().msgId();
             }
         }
         msgList = Core::requestAllMsgs(coreSession()->user(), -1, last, additional);
-        msgIter = msgList.constBegin();
-        msgListEnd = msgList.constEnd();
-        while (msgIter != msgListEnd) {
-            backlog << qVariantFromValue(*msgIter);
-            ++msgIter;
-        }
+        std::transform(msgList.cbegin(), msgList.cend(), std::back_inserter(backlog), [](auto&& msg) {
+            return QVariant::fromValue(msg);
+        });
     }
 
     return backlog;
@@ -161,15 +143,11 @@ QVariantList CoreBacklogManager::requestBacklogAll(MsgId first, MsgId last, int
 QVariantList CoreBacklogManager::requestBacklogAllFiltered(MsgId first, MsgId last, int limit, int additional, int type, int flags)
 {
     QVariantList backlog;
-    QList<Message> msgList;
-    msgList = Core::requestAllMsgsFiltered(coreSession()->user(), first, last, limit, Message::Types{type}, Message::Flags{flags});
-
-    QList<Message>::const_iterator msgIter = msgList.constBegin();
-    QList<Message>::const_iterator msgListEnd = msgList.constEnd();
-    while (msgIter != msgListEnd) {
-        backlog << qVariantFromValue(*msgIter);
-        ++msgIter;
-    }
+    auto msgList = Core::requestAllMsgsFiltered(coreSession()->user(), first, last, limit, Message::Types{type}, Message::Flags{flags});
+
+    std::transform(msgList.cbegin(), msgList.cend(), std::back_inserter(backlog), [](auto&& msg) {
+        return QVariant::fromValue(msg);
+    });
 
     if (additional) {
         if (first != -1) {
@@ -177,20 +155,17 @@ QVariantList CoreBacklogManager::requestBacklogAllFiltered(MsgId first, MsgId la
         }
         else {
             last = -1;
-            if (!msgList.isEmpty()) {
-                if (msgList.first().msgId() < msgList.last().msgId())
-                    last = msgList.first().msgId();
+            if (!msgList.empty()) {
+                if (msgList.front().msgId() < msgList.back().msgId())
+                    last = msgList.front().msgId();
                 else
-                    last = msgList.last().msgId();
+                    last = msgList.back().msgId();
             }
         }
         msgList = Core::requestAllMsgsFiltered(coreSession()->user(), -1, last, additional, Message::Types{type}, Message::Flags{flags});
-        msgIter = msgList.constBegin();
-        msgListEnd = msgList.constEnd();
-        while (msgIter != msgListEnd) {
-            backlog << qVariantFromValue(*msgIter);
-            ++msgIter;
-        }
+        std::transform(msgList.cbegin(), msgList.cend(), std::back_inserter(backlog), [](auto&& msg) {
+            return QVariant::fromValue(msg);
+        });
     }
 
     return backlog;
index 4f3830e..266f344 100644 (file)
 
 #include "corebuffersyncer.h"
 
+#include <algorithm>
+#include <iterator>
+#include <set>
+
 #include "core.h"
 #include "corenetwork.h"
 #include "coresession.h"
@@ -184,15 +188,14 @@ void CoreBufferSyncer::requestPurgeBufferIds()
 void CoreBufferSyncer::purgeBufferIds()
 {
     _purgeBuffers = false;
-    QList<BufferInfo> bufferInfos = Core::requestBuffers(_coreSession->user());
-    QSet<BufferId> actualBuffers;
-    foreach (BufferInfo bufferInfo, bufferInfos) {
-        actualBuffers << bufferInfo.bufferId();
-    }
+    auto bufferInfos = Core::requestBuffers(_coreSession->user());
+    std::set<BufferId> actualBuffers;
+    std::transform(bufferInfos.cbegin(), bufferInfos.cend(), std::inserter(actualBuffers, actualBuffers.end()),
+                   [](auto&& bufferInfo) { return bufferInfo.bufferId(); });
 
     QSet<BufferId> storedIds = lastSeenBufferIds().toSet() + markerLineBufferIds().toSet();
     foreach (BufferId bufferId, storedIds) {
-        if (!actualBuffers.contains(bufferId)) {
+        if (actualBuffers.find(bufferId) == actualBuffers.end()) {
             BufferSyncer::removeBuffer(bufferId);
         }
     }
index 961fcaf..a05b6ba 100644 (file)
@@ -207,11 +207,11 @@ void CoreSession::loadSettings()
 
     // migrate to db
     QList<IdentityId> ids = s.identityIds();
-    QList<NetworkInfo> networkInfos = Core::networks(user());
+    std::vector<NetworkInfo> networkInfos = Core::networks(user());
     for (IdentityId id : ids) {
         CoreIdentity identity(s.identity(id));
         IdentityId newId = Core::createIdentity(user(), identity);
-        QList<NetworkInfo>::iterator networkIter = networkInfos.begin();
+        auto networkIter = networkInfos.begin();
         while (networkIter != networkInfos.end()) {
             if (networkIter->identity == id) {
                 networkIter->identity = newId;
@@ -244,10 +244,8 @@ void CoreSession::saveSessionState() const
 
 void CoreSession::restoreSessionState()
 {
-    QList<NetworkId> nets = Core::connectedNetworks(user());
-    CoreNetwork* net = nullptr;
-    for (NetworkId id :  nets) {
-        net = network(id);
+    for (NetworkId id : Core::connectedNetworks(user())) {
+        auto net = network(id);
         Q_ASSERT(net);
         net->connectToIrc();
     }
@@ -359,7 +357,7 @@ void CoreSession::processMessageEvent(MessageEvent* event)
     });
 }
 
-QList<BufferInfo> CoreSession::buffers() const
+std::vector<BufferInfo> CoreSession::buffers() const
 {
     return Core::requestBuffers(user());
 }
@@ -659,7 +657,6 @@ void CoreSession::removeNetwork(NetworkId id)
 
 void CoreSession::destroyNetwork(NetworkId id)
 {
-    QList<BufferId> removedBuffers = Core::requestBufferIdsForNetwork(user(), id);
     Network* net = _networks.take(id);
     if (net && Core::removeNetwork(user(), id)) {
         // make sure that all unprocessed RawMessages from this network are removed
@@ -673,7 +670,7 @@ void CoreSession::destroyNetwork(NetworkId id)
             }
         }
         // remove buffers from syncer
-        for (BufferId bufferId : removedBuffers) {
+        for (BufferId bufferId : Core::requestBufferIdsForNetwork(user(), id)) {
             _bufferSyncer->removeBuffer(bufferId);
         }
         emit networkRemoved(id);
index 3e08eac..f47d175 100644 (file)
@@ -21,6 +21,7 @@
 #pragma once
 
 #include <utility>
+#include <vector>
 
 #include <QHash>
 #include <QSet>
@@ -65,7 +66,7 @@ class CoreSession : public QObject
 public:
     CoreSession(UserId, bool restoreState, bool strictIdentEnabled, QObject* parent = nullptr);
 
-    QList<BufferInfo> buffers() const;
+    std::vector<BufferInfo> buffers() const;
     inline UserId user() const { return _user; }
     CoreNetwork* network(NetworkId) const;
     CoreIdentity* identity(IdentityId) const;
index ee0bf71..2aa2855 100644 (file)
@@ -676,9 +676,9 @@ void PostgreSqlStorage::removeIdentity(UserId user, IdentityId identityId)
     }
 }
 
-QList<CoreIdentity> PostgreSqlStorage::identities(UserId user)
+std::vector<CoreIdentity> PostgreSqlStorage::identities(UserId user)
 {
-    QList<CoreIdentity> identities;
+    std::vector<CoreIdentity> identities;
 
     QSqlDatabase db = logDb();
     if (!beginReadOnlyTransaction(db)) {
@@ -730,7 +730,7 @@ QList<CoreIdentity> PostgreSqlStorage::identities(UserId user)
             nicks << nickQuery.value(0).toString();
         }
         identity.setNicks(nicks);
-        identities << identity;
+        identities.push_back(std::move(identity));
     }
     db.commit();
     return identities;
@@ -908,9 +908,9 @@ bool PostgreSqlStorage::removeNetwork(UserId user, const NetworkId& networkId)
     return true;
 }
 
-QList<NetworkInfo> PostgreSqlStorage::networks(UserId user)
+std::vector<NetworkInfo> PostgreSqlStorage::networks(UserId user)
 {
-    QList<NetworkInfo> nets;
+    std::vector<NetworkInfo> nets;
 
     QSqlDatabase db = logDb();
     if (!beginReadOnlyTransaction(db)) {
@@ -984,15 +984,15 @@ QList<NetworkInfo> PostgreSqlStorage::networks(UserId user)
             servers << server;
         }
         net.serverList = servers;
-        nets << net;
+        nets.push_back(std::move(net));
     }
     db.commit();
     return nets;
 }
 
-QList<NetworkId> PostgreSqlStorage::connectedNetworks(UserId user)
+std::vector<NetworkId> PostgreSqlStorage::connectedNetworks(UserId user)
 {
-    QList<NetworkId> connectedNets;
+    std::vector<NetworkId> connectedNets;
 
     QSqlDatabase db = logDb();
     if (!beginReadOnlyTransaction(db)) {
@@ -1008,7 +1008,7 @@ QList<NetworkId> PostgreSqlStorage::connectedNetworks(UserId user)
     watchQuery(query);
 
     while (query.next()) {
-        connectedNets << query.value(0).toInt();
+        connectedNets.emplace_back(query.value(0).toInt());
     }
 
     db.commit();
@@ -1210,9 +1210,9 @@ BufferInfo PostgreSqlStorage::getBufferInfo(UserId user, const BufferId& bufferI
     return bufferInfo;
 }
 
-QList<BufferInfo> PostgreSqlStorage::requestBuffers(UserId user)
+std::vector<BufferInfo> PostgreSqlStorage::requestBuffers(UserId user)
 {
-    QList<BufferInfo> bufferlist;
+    std::vector<BufferInfo> bufferlist;
 
     QSqlDatabase db = logDb();
     if (!beginReadOnlyTransaction(db)) {
@@ -1228,19 +1228,19 @@ QList<BufferInfo> PostgreSqlStorage::requestBuffers(UserId user)
     safeExec(query);
     watchQuery(query);
     while (query.next()) {
-        bufferlist << BufferInfo(query.value(0).toInt(),
-                                 query.value(1).toInt(),
-                                 (BufferInfo::Type)query.value(2).toInt(),
-                                 query.value(3).toInt(),
-                                 query.value(4).toString());
+        bufferlist.emplace_back(query.value(0).toInt(),
+                                query.value(1).toInt(),
+                                (BufferInfo::Type)query.value(2).toInt(),
+                                query.value(3).toInt(),
+                                query.value(4).toString());
     }
     db.commit();
     return bufferlist;
 }
 
-QList<BufferId> PostgreSqlStorage::requestBufferIdsForNetwork(UserId user, NetworkId networkId)
+std::vector<BufferId> PostgreSqlStorage::requestBufferIdsForNetwork(UserId user, NetworkId networkId)
 {
-    QList<BufferId> bufferList;
+    std::vector<BufferId> bufferList;
 
     QSqlDatabase db = logDb();
     if (!beginReadOnlyTransaction(db)) {
@@ -1257,7 +1257,7 @@ QList<BufferId> PostgreSqlStorage::requestBufferIdsForNetwork(UserId user, Netwo
     safeExec(query);
     watchQuery(query);
     while (query.next()) {
-        bufferList << BufferId(query.value(0).toInt());
+        bufferList.emplace_back(query.value(0).toInt());
     }
     db.commit();
     return bufferList;
@@ -1755,9 +1755,9 @@ bool PostgreSqlStorage::logMessages(MessageList& msgs)
     return true;
 }
 
-QList<Message> PostgreSqlStorage::requestMsgs(UserId user, BufferId bufferId, MsgId first, MsgId last, int limit)
+std::vector<Message> PostgreSqlStorage::requestMsgs(UserId user, BufferId bufferId, MsgId first, MsgId last, int limit)
 {
-    QList<Message> messagelist;
+    std::vector<Message> messagelist;
 
     QSqlDatabase db = logDb();
     if (!beginReadOnlyTransaction(db)) {
@@ -1816,17 +1816,17 @@ QList<Message> PostgreSqlStorage::requestMsgs(UserId user, BufferId bufferId, Ms
                     query.value(7).toString(),
                     (Message::Flags)query.value(3).toInt());
         msg.setMsgId(query.value(0).toLongLong());
-        messagelist << msg;
+        messagelist.push_back(std::move(msg));
     }
 
     db.commit();
     return messagelist;
 }
 
-QList<Message> PostgreSqlStorage::requestMsgsFiltered(
+std::vector<Message> PostgreSqlStorage::requestMsgsFiltered(
     UserId user, BufferId bufferId, MsgId first, MsgId last, int limit, Message::Types type, Message::Flags flags)
 {
-    QList<Message> messagelist;
+    std::vector<Message> messagelist;
 
     QSqlDatabase db = logDb();
     if (!beginReadOnlyTransaction(db)) {
@@ -1884,16 +1884,16 @@ QList<Message> PostgreSqlStorage::requestMsgsFiltered(
                     query.value(7).toString(),
                     Message::Flags{query.value(3).toInt()});
         msg.setMsgId(query.value(0).toLongLong());
-        messagelist << msg;
+        messagelist.push_back(std::move(msg));
     }
 
     db.commit();
     return messagelist;
 }
 
-QList<Message> PostgreSqlStorage::requestAllMsgs(UserId user, MsgId first, MsgId last, int limit)
+std::vector<Message> PostgreSqlStorage::requestAllMsgs(UserId user, MsgId first, MsgId last, int limit)
 {
-    QList<Message> messagelist;
+    std::vector<Message> messagelist;
 
     // requestBuffers uses it's own transaction.
     QHash<BufferId, BufferInfo> bufferInfoHash;
@@ -1940,17 +1940,17 @@ QList<Message> PostgreSqlStorage::requestAllMsgs(UserId user, MsgId first, MsgId
                     query.value(8).toString(),
                     (Message::Flags)query.value(4).toInt());
         msg.setMsgId(query.value(0).toLongLong());
-        messagelist << msg;
+        messagelist.push_back(std::move(msg));
     }
 
     db.commit();
     return messagelist;
 }
 
-QList<Message> PostgreSqlStorage::requestAllMsgsFiltered(
+std::vector<Message> PostgreSqlStorage::requestAllMsgsFiltered(
     UserId user, MsgId first, MsgId last, int limit, Message::Types type, Message::Flags flags)
 {
-    QList<Message> messagelist;
+    std::vector<Message> messagelist;
 
     // requestBuffers uses it's own transaction.
     QHash<BufferId, BufferInfo> bufferInfoHash;
@@ -2004,7 +2004,7 @@ QList<Message> PostgreSqlStorage::requestAllMsgsFiltered(
                     query.value(8).toString(),
                     Message::Flags{query.value(4).toInt()});
         msg.setMsgId(query.value(0).toLongLong());
-        messagelist << msg;
+        messagelist.push_back(std::move(msg));
     }
 
     db.commit();
index f93bf69..51ff090 100644 (file)
@@ -63,14 +63,14 @@ public slots:
     IdentityId createIdentity(UserId user, CoreIdentity& identity) override;
     bool updateIdentity(UserId user, const CoreIdentity& identity) override;
     void removeIdentity(UserId user, IdentityId identityId) override;
-    QList<CoreIdentity> identities(UserId user) override;
+    std::vector<CoreIdentity> identities(UserId user) override;
 
     /* Network handling */
     NetworkId createNetwork(UserId user, const NetworkInfo& info) override;
     bool updateNetwork(UserId user, const NetworkInfo& info) override;
     bool removeNetwork(UserId user, const NetworkId& networkId) override;
-    QList<NetworkInfo> networks(UserId user) override;
-    QList<NetworkId> connectedNetworks(UserId user) override;
+    std::vector<NetworkInfo> networks(UserId user) override;
+    std::vector<NetworkId> connectedNetworks(UserId user) override;
     void setNetworkConnected(UserId user, const NetworkId& networkId, bool isConnected) override;
 
     /* persistent channels */
@@ -87,8 +87,8 @@ public slots:
     /* Buffer handling */
     BufferInfo bufferInfo(UserId user, const NetworkId& networkId, BufferInfo::Type type, const QString& buffer = "", bool create = true) override;
     BufferInfo getBufferInfo(UserId user, const BufferId& bufferId) override;
-    QList<BufferInfo> requestBuffers(UserId user) override;
-    QList<BufferId> requestBufferIdsForNetwork(UserId user, NetworkId networkId) override;
+    std::vector<BufferInfo> requestBuffers(UserId user) override;
+    std::vector<BufferId> requestBufferIdsForNetwork(UserId user, NetworkId networkId) override;
     bool removeBuffer(const UserId& user, const BufferId& bufferId) override;
     bool renameBuffer(const UserId& user, const BufferId& bufferId, const QString& newName) override;
     bool mergeBuffersPermanently(const UserId& user, const BufferId& bufferId1, const BufferId& bufferId2) override;
@@ -108,21 +108,21 @@ public slots:
     /* Message handling */
     bool logMessage(Message& msg) override;
     bool logMessages(MessageList& msgs) override;
-    QList<Message> requestMsgs(UserId user, BufferId bufferId, MsgId first = -1, MsgId last = -1, int limit = -1) override;
-    QList<Message> requestMsgsFiltered(UserId user,
-                                       BufferId bufferId,
-                                       MsgId first = -1,
-                                       MsgId last = -1,
-                                       int limit = -1,
-                                       Message::Types type = Message::Types{-1},
-                                       Message::Flags flags = Message::Flags{-1}) override;
-    QList<Message> requestAllMsgs(UserId user, MsgId first = -1, MsgId last = -1, int limit = -1) override;
-    QList<Message> requestAllMsgsFiltered(UserId user,
-                                          MsgId first = -1,
-                                          MsgId last = -1,
-                                          int limit = -1,
-                                          Message::Types type = Message::Types{-1},
-                                          Message::Flags flags = Message::Flags{-1}) override;
+    std::vector<Message> requestMsgs(UserId user, BufferId bufferId, MsgId first = -1, MsgId last = -1, int limit = -1) override;
+    std::vector<Message> requestMsgsFiltered(UserId user,
+                                             BufferId bufferId,
+                                             MsgId first = -1,
+                                             MsgId last = -1,
+                                             int limit = -1,
+                                             Message::Types type = Message::Types{-1},
+                                             Message::Flags flags = Message::Flags{-1}) override;
+    std::vector<Message> requestAllMsgs(UserId user, MsgId first = -1, MsgId last = -1, int limit = -1) override;
+    std::vector<Message> requestAllMsgsFiltered(UserId user,
+                                                MsgId first = -1,
+                                                MsgId last = -1,
+                                                int limit = -1,
+                                                Message::Types type = Message::Types{-1},
+                                                Message::Flags flags = Message::Flags{-1}) override;
 
     /* Sysident handling */
     QMap<UserId, QString> getAllAuthUserNames() override;
index a456d81..1a75713 100644 (file)
@@ -650,9 +650,9 @@ void SqliteStorage::removeIdentity(UserId user, IdentityId identityId)
     unlock();
 }
 
-QList<CoreIdentity> SqliteStorage::identities(UserId user)
+std::vector<CoreIdentity> SqliteStorage::identities(UserId user)
 {
-    QList<CoreIdentity> identities;
+    std::vector<CoreIdentity> identities;
     QSqlDatabase db = logDb();
     db.transaction();
 
@@ -699,8 +699,8 @@ QList<CoreIdentity> SqliteStorage::identities(UserId user)
             while (nickQuery.next()) {
                 nicks << nickQuery.value(0).toString();
             }
-            identity.setNicks(nicks);
-            identities << identity;
+            identity.setNicks(std::move(nicks));
+            identities.push_back(std::move(identity));
         }
         db.commit();
     }
@@ -938,9 +938,9 @@ bool SqliteStorage::removeNetwork(UserId user, const NetworkId& networkId)
     return true;
 }
 
-QList<NetworkInfo> SqliteStorage::networks(UserId user)
+std::vector<NetworkInfo> SqliteStorage::networks(UserId user)
 {
-    QList<NetworkInfo> nets;
+    std::vector<NetworkInfo> nets;
 
     QSqlDatabase db = logDb();
     db.transaction();
@@ -1008,7 +1008,7 @@ QList<NetworkInfo> SqliteStorage::networks(UserId user)
                         servers << server;
                     }
                     net.serverList = servers;
-                    nets << net;
+                    nets.push_back(std::move(net));
                 }
             }
         }
@@ -1018,9 +1018,9 @@ QList<NetworkInfo> SqliteStorage::networks(UserId user)
     return nets;
 }
 
-QList<NetworkId> SqliteStorage::connectedNetworks(UserId user)
+std::vector<NetworkId> SqliteStorage::connectedNetworks(UserId user)
 {
-    QList<NetworkId> connectedNets;
+    std::vector<NetworkId> connectedNets;
 
     QSqlDatabase db = logDb();
     db.transaction();
@@ -1034,7 +1034,7 @@ QList<NetworkId> SqliteStorage::connectedNetworks(UserId user)
         watchQuery(query);
 
         while (query.next()) {
-            connectedNets << query.value(0).toInt();
+            connectedNets.emplace_back(query.value(0).toInt());
         }
         db.commit();
     }
@@ -1295,9 +1295,9 @@ BufferInfo SqliteStorage::getBufferInfo(UserId user, const BufferId& bufferId)
     return bufferInfo;
 }
 
-QList<BufferInfo> SqliteStorage::requestBuffers(UserId user)
+std::vector<BufferInfo> SqliteStorage::requestBuffers(UserId user)
 {
-    QList<BufferInfo> bufferlist;
+    std::vector<BufferInfo> bufferlist;
 
     QSqlDatabase db = logDb();
     db.transaction();
@@ -1311,11 +1311,11 @@ QList<BufferInfo> SqliteStorage::requestBuffers(UserId user)
         safeExec(query);
         watchQuery(query);
         while (query.next()) {
-            bufferlist << BufferInfo(query.value(0).toInt(),
-                                     query.value(1).toInt(),
-                                     (BufferInfo::Type)query.value(2).toInt(),
-                                     query.value(3).toInt(),
-                                     query.value(4).toString());
+            bufferlist.emplace_back(query.value(0).toInt(),
+                                    query.value(1).toInt(),
+                                    (BufferInfo::Type)query.value(2).toInt(),
+                                    query.value(3).toInt(),
+                                    query.value(4).toString());
         }
         db.commit();
     }
@@ -1324,9 +1324,9 @@ QList<BufferInfo> SqliteStorage::requestBuffers(UserId user)
     return bufferlist;
 }
 
-QList<BufferId> SqliteStorage::requestBufferIdsForNetwork(UserId user, NetworkId networkId)
+std::vector<BufferId> SqliteStorage::requestBufferIdsForNetwork(UserId user, NetworkId networkId)
 {
-    QList<BufferId> bufferList;
+    std::vector<BufferId> bufferList;
 
     QSqlDatabase db = logDb();
     db.transaction();
@@ -1341,7 +1341,7 @@ QList<BufferId> SqliteStorage::requestBufferIdsForNetwork(UserId user, NetworkId
         safeExec(query);
         watchQuery(query);
         while (query.next()) {
-            bufferList << BufferId(query.value(0).toInt());
+            bufferList.emplace_back(query.value(0).toInt());
         }
         db.commit();
     }
@@ -1897,9 +1897,9 @@ bool SqliteStorage::logMessages(MessageList& msgs)
     return !error;
 }
 
-QList<Message> SqliteStorage::requestMsgs(UserId user, BufferId bufferId, MsgId first, MsgId last, int limit)
+std::vector<Message> SqliteStorage::requestMsgs(UserId user, BufferId bufferId, MsgId first, MsgId last, int limit)
 {
-    QList<Message> messagelist;
+    std::vector<Message> messagelist;
 
     QSqlDatabase db = logDb();
     db.transaction();
@@ -1966,7 +1966,7 @@ QList<Message> SqliteStorage::requestMsgs(UserId user, BufferId bufferId, MsgId
                 query.value(7).toString(),
                 (Message::Flags)query.value(3).toInt());
             msg.setMsgId(query.value(0).toLongLong());
-            messagelist << msg;
+            messagelist.push_back(std::move(msg));
         }
     }
     db.commit();
@@ -1975,10 +1975,10 @@ QList<Message> SqliteStorage::requestMsgs(UserId user, BufferId bufferId, MsgId
     return messagelist;
 }
 
-QList<Message> SqliteStorage::requestMsgsFiltered(
+std::vector<Message> SqliteStorage::requestMsgsFiltered(
     UserId user, BufferId bufferId, MsgId first, MsgId last, int limit, Message::Types type, Message::Flags flags)
 {
-    QList<Message> messagelist;
+    std::vector<Message> messagelist;
 
     QSqlDatabase db = logDb();
     db.transaction();
@@ -2050,7 +2050,7 @@ QList<Message> SqliteStorage::requestMsgsFiltered(
                 query.value(7).toString(),
                 Message::Flags{query.value(3).toInt()});
             msg.setMsgId(query.value(0).toLongLong());
-            messagelist << msg;
+            messagelist.push_back(std::move(msg));
         }
     }
     db.commit();
@@ -2059,9 +2059,9 @@ QList<Message> SqliteStorage::requestMsgsFiltered(
     return messagelist;
 }
 
-QList<Message> SqliteStorage::requestAllMsgs(UserId user, MsgId first, MsgId last, int limit)
+std::vector<Message> SqliteStorage::requestAllMsgs(UserId user, MsgId first, MsgId last, int limit)
 {
-    QList<Message> messagelist;
+    std::vector<Message> messagelist;
 
     QSqlDatabase db = logDb();
     db.transaction();
@@ -2113,7 +2113,7 @@ QList<Message> SqliteStorage::requestAllMsgs(UserId user, MsgId first, MsgId las
                 query.value(8).toString(),
                 (Message::Flags)query.value(4).toInt());
             msg.setMsgId(query.value(0).toLongLong());
-            messagelist << msg;
+            messagelist.push_back(std::move(msg));
         }
     }
     db.commit();
@@ -2121,9 +2121,9 @@ QList<Message> SqliteStorage::requestAllMsgs(UserId user, MsgId first, MsgId las
     return messagelist;
 }
 
-QList<Message> SqliteStorage::requestAllMsgsFiltered(UserId user, MsgId first, MsgId last, int limit, Message::Types type, Message::Flags flags)
+std::vector<Message> SqliteStorage::requestAllMsgsFiltered(UserId user, MsgId first, MsgId last, int limit, Message::Types type, Message::Flags flags)
 {
-    QList<Message> messagelist;
+    std::vector<Message> messagelist;
 
     QSqlDatabase db = logDb();
     db.transaction();
@@ -2180,7 +2180,7 @@ QList<Message> SqliteStorage::requestAllMsgsFiltered(UserId user, MsgId first, M
                 query.value(8).toString(),
                 Message::Flags{query.value(4).toInt()});
             msg.setMsgId(query.value(0).toLongLong());
-            messagelist << msg;
+            messagelist.push_back(std::move(msg));
         }
     }
     db.commit();
index 618d5dd..30617a8 100644 (file)
@@ -67,14 +67,14 @@ public slots:
     IdentityId createIdentity(UserId user, CoreIdentity& identity) override;
     bool updateIdentity(UserId user, const CoreIdentity& identity) override;
     void removeIdentity(UserId user, IdentityId identityId) override;
-    QList<CoreIdentity> identities(UserId user) override;
+    std::vector<CoreIdentity> identities(UserId user) override;
 
     /* Network handling */
     NetworkId createNetwork(UserId user, const NetworkInfo& info) override;
     bool updateNetwork(UserId user, const NetworkInfo& info) override;
     bool removeNetwork(UserId user, const NetworkId& networkId) override;
-    QList<NetworkInfo> networks(UserId user) override;
-    QList<NetworkId> connectedNetworks(UserId user) override;
+    std::vector<NetworkInfo> networks(UserId user) override;
+    std::vector<NetworkId> connectedNetworks(UserId user) override;
     void setNetworkConnected(UserId user, const NetworkId& networkId, bool isConnected) override;
 
     /* persistent channels */
@@ -91,8 +91,8 @@ public slots:
     /* Buffer handling */
     BufferInfo bufferInfo(UserId user, const NetworkId& networkId, BufferInfo::Type type, const QString& buffer = "", bool create = true) override;
     BufferInfo getBufferInfo(UserId user, const BufferId& bufferId) override;
-    QList<BufferInfo> requestBuffers(UserId user) override;
-    QList<BufferId> requestBufferIdsForNetwork(UserId user, NetworkId networkId) override;
+    std::vector<BufferInfo> requestBuffers(UserId user) override;
+    std::vector<BufferId> requestBufferIdsForNetwork(UserId user, NetworkId networkId) override;
     bool removeBuffer(const UserId& user, const BufferId& bufferId) override;
     bool renameBuffer(const UserId& user, const BufferId& bufferId, const QString& newName) override;
     bool mergeBuffersPermanently(const UserId& user, const BufferId& bufferId1, const BufferId& bufferId2) override;
@@ -112,21 +112,21 @@ public slots:
     /* Message handling */
     bool logMessage(Message& msg) override;
     bool logMessages(MessageList& msgs) override;
-    QList<Message> requestMsgs(UserId user, BufferId bufferId, MsgId first = -1, MsgId last = -1, int limit = -1) override;
-    QList<Message> requestMsgsFiltered(UserId user,
-                                       BufferId bufferId,
-                                       MsgId first = -1,
-                                       MsgId last = -1,
-                                       int limit = -1,
-                                       Message::Types type = Message::Types{-1},
-                                       Message::Flags flags = Message::Flags{-1}) override;
-    QList<Message> requestAllMsgs(UserId user, MsgId first = -1, MsgId last = -1, int limit = -1) override;
-    QList<Message> requestAllMsgsFiltered(UserId user,
-                                          MsgId first = -1,
-                                          MsgId last = -1,
-                                          int limit = -1,
-                                          Message::Types type = Message::Types{-1},
-                                          Message::Flags flags = Message::Flags{-1}) override;
+    std::vector<Message> requestMsgs(UserId user, BufferId bufferId, MsgId first = -1, MsgId last = -1, int limit = -1) override;
+    std::vector<Message> requestMsgsFiltered(UserId user,
+                                             BufferId bufferId,
+                                             MsgId first = -1,
+                                             MsgId last = -1,
+                                             int limit = -1,
+                                             Message::Types type = Message::Types{-1},
+                                             Message::Flags flags = Message::Flags{-1}) override;
+    std::vector<Message> requestAllMsgs(UserId user, MsgId first = -1, MsgId last = -1, int limit = -1) override;
+    std::vector<Message> requestAllMsgsFiltered(UserId user,
+                                                MsgId first = -1,
+                                                MsgId last = -1,
+                                                int limit = -1,
+                                                Message::Types type = Message::Types{-1},
+                                                Message::Flags flags = Message::Flags{-1}) override;
 
     /* Sysident handling */
     QMap<UserId, QString> getAllAuthUserNames() override;
index c14ba20..4fdc848 100644 (file)
@@ -20,7 +20,8 @@
 
 #pragma once
 
-#include <QList>
+#include <vector>
+
 #include <QMap>
 #include <QObject>
 #include <QProcessEnvironment>
@@ -199,7 +200,7 @@ public slots:
     virtual IdentityId createIdentity(UserId user, CoreIdentity& identity) = 0;
     virtual bool updateIdentity(UserId user, const CoreIdentity& identity) = 0;
     virtual void removeIdentity(UserId user, IdentityId identityId) = 0;
-    virtual QList<CoreIdentity> identities(UserId user) = 0;
+    virtual std::vector<CoreIdentity> identities(UserId user) = 0;
 
     /* Network handling */
 
@@ -233,7 +234,7 @@ public slots:
      *  \param user        The core user
      *  \return QList<NetworkInfo>.
      */
-    virtual QList<NetworkInfo> networks(UserId user) = 0;
+    virtual std::vector<NetworkInfo> networks(UserId user) = 0;
 
     //! Get a list of Networks to restore
     /** Return a list of networks the user was connected at the time of core shutdown
@@ -241,7 +242,7 @@ public slots:
      *
      *  \param user  The User Id in question
      */
-    virtual QList<NetworkId> connectedNetworks(UserId user) = 0;
+    virtual std::vector<NetworkId> connectedNetworks(UserId user) = 0;
 
     //! Update the connected state of a network
     /** \note This method is threadsafe
@@ -340,7 +341,7 @@ public slots:
      *  \param user  The user whose buffers we request
      *  \return A list of the BufferInfos for all buffers as requested
      */
-    virtual QList<BufferInfo> requestBuffers(UserId user) = 0;
+    virtual std::vector<BufferInfo> requestBuffers(UserId user) = 0;
 
     //! Request a list of BufferIds for a given NetworkId
     /** \note This method is threadsafe.
@@ -349,7 +350,7 @@ public slots:
      *  \param networkId  The NetworkId of the network in question
      *  \return List of BufferIds belonging to the Network
      */
-    virtual QList<BufferId> requestBufferIdsForNetwork(UserId user, NetworkId networkId) = 0;
+    virtual std::vector<BufferId> requestBufferIdsForNetwork(UserId user, NetworkId networkId) = 0;
 
     //! Remove permanently a buffer and it's content from the storage backend
     /** This call cannot be reverted!
@@ -503,7 +504,7 @@ public slots:
      *  \param limit    if != -1 limit the returned list to a max of \limit entries
      *  \return The requested list of messages
      */
-    virtual QList<Message> requestMsgs(UserId user, BufferId bufferId, MsgId first = -1, MsgId last = -1, int limit = -1) = 0;
+    virtual std::vector<Message> requestMsgs(UserId user, BufferId bufferId, MsgId first = -1, MsgId last = -1, int limit = -1) = 0;
 
     //! Request a certain number messages stored in a given buffer, matching certain filters
     /** \param buffer   The buffer we request messages from
@@ -513,14 +514,13 @@ public slots:
      *  \param type     The Message::Types that should be returned
      *  \return The requested list of messages
      */
-    virtual QList<Message> requestMsgsFiltered(UserId user,
-                                               BufferId bufferId,
-                                               MsgId first = -1,
-                                               MsgId last = -1,
-                                               int limit = -1,
-                                               Message::Types type = Message::Types{-1},
-                                               Message::Flags flags = Message::Flags{-1})
-        = 0;
+    virtual std::vector<Message> requestMsgsFiltered(UserId user,
+                                                     BufferId bufferId,
+                                                     MsgId first = -1,
+                                                     MsgId last = -1,
+                                                     int limit = -1,
+                                                     Message::Types type = Message::Types{-1},
+                                                     Message::Flags flags = Message::Flags{-1}) = 0;
 
     //! Request a certain number of messages across all buffers
     /** \param first    if != -1 return only messages with a MsgId >= first
@@ -528,7 +528,7 @@ public slots:
      *  \param limit    Max amount of messages
      *  \return The requested list of messages
      */
-    virtual QList<Message> requestAllMsgs(UserId user, MsgId first = -1, MsgId last = -1, int limit = -1) = 0;
+    virtual std::vector<Message> requestAllMsgs(UserId user, MsgId first = -1, MsgId last = -1, int limit = -1) = 0;
 
     //! Request a certain number of messages across all buffers, matching certain filters
     /** \param first    if != -1 return only messages with a MsgId >= first
@@ -537,13 +537,12 @@ public slots:
      *  \param type     The Message::Types that should be returned
      *  \return The requested list of messages
      */
-    virtual QList<Message> requestAllMsgsFiltered(UserId user,
-                                                  MsgId first = -1,
-                                                  MsgId last = -1,
-                                                  int limit = -1,
-                                                  Message::Types type = Message::Types{-1},
-                                                  Message::Flags flags = Message::Flags{-1})
-        = 0;
+    virtual std::vector<Message> requestAllMsgsFiltered(UserId user,
+                                                        MsgId first = -1,
+                                                        MsgId last = -1,
+                                                        int limit = -1,
+                                                        Message::Types type = Message::Types{-1},
+                                                        Message::Flags flags = Message::Flags{-1}) = 0;
 
     //! Fetch all authusernames
     /** \return      Map of all current UserIds to permitted idents