diff options
author | Kitsune Ral <Kitsune-Ral@users.sf.net> | 2017-12-25 17:20:27 +0900 |
---|---|---|
committer | Kitsune Ral <Kitsune-Ral@users.sf.net> | 2017-12-25 17:20:27 +0900 |
commit | 7ef5d0b10ae214f7c58aa77fb84547be1388f2d6 (patch) | |
tree | 1b488fed4106dde1f0248da402fdd40bf89de9c9 | |
parent | a4a1129385731c3999a6d5986a24fc069938245c (diff) | |
download | libquotient-7ef5d0b10ae214f7c58aa77fb84547be1388f2d6.tar.gz libquotient-7ef5d0b10ae214f7c58aa77fb84547be1388f2d6.zip |
Now really switching to the new toolchain: C++14, GCC/Clang 5, Qt 5.6
Also a bit of code tightening with some C++14 (but not only) things.
-rw-r--r-- | CMakeLists.txt | 35 | ||||
-rw-r--r-- | room.cpp | 13 | ||||
-rw-r--r-- | room.h | 14 |
3 files changed, 23 insertions, 39 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index e33c4e0e..7750b7ad 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,7 +1,6 @@ -cmake_minimum_required(VERSION 2.8.11) # Maybe works with even older versions +cmake_minimum_required(VERSION 3.1) -project(qmatrixclient) -enable_language(CXX) +project(qmatrixclient CXX) include(CheckCXXCompilerFlag) @@ -19,30 +18,16 @@ if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES) "MinSizeRel" "RelWithDebInfo") endif() -# Setup command line parameters for the compiler and linker -CHECK_CXX_COMPILER_FLAG("-Wall" WALL_FLAG_SUPPORTED) -if ( WALL_FLAG_SUPPORTED AND NOT CMAKE_CXX_FLAGS MATCHES "(^| )-Wall($| )") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall") -endif ( ) -CHECK_CXX_COMPILER_FLAG("-Wpedantic" PEDANTIC_FLAG_SUPPORTED) -if ( PEDANTIC_FLAG_SUPPORTED AND NOT CMAKE_CXX_FLAGS MATCHES "(^| )pedantic($| )") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wpedantic") -endif ( ) -CHECK_CXX_COMPILER_FLAG("-Werror=return-type" WERROR_FLAG_SUPPORTED) -if ( WERROR_FLAG_SUPPORTED ) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Werror=return-type") -endif ( ) +foreach (FLAG all pedantic error=return-type) + CHECK_CXX_COMPILER_FLAG("-W${FLAG}" WARN_${FLAG}_SUPPORTED) + if ( WARN_${FLAG}_SUPPORTED AND NOT CMAKE_CXX_FLAGS MATCHES "(^| )-W?${FLAG}($| )") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -W${FLAG}") + endif () +endforeach () -if ( CMAKE_VERSION VERSION_LESS "3.1" ) - CHECK_CXX_COMPILER_FLAG("-std=c++11" STD_FLAG_SUPPORTED) - if ( STD_FLAG_SUPPORTED ) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") - endif ( STD_FLAG_SUPPORTED ) -else ( CMAKE_VERSION VERSION_LESS "3.1" ) - set(CMAKE_CXX_STANDARD 11) -endif ( CMAKE_VERSION VERSION_LESS "3.1" ) +set(CMAKE_CXX_STANDARD 14) -find_package(Qt5 5.2.1 REQUIRED Network Gui) +find_package(Qt5 5.6 REQUIRED Network Gui) get_filename_component(Qt5_Prefix "${Qt5_DIR}/../../../.." ABSOLUTE) message( STATUS ) @@ -457,7 +457,7 @@ void Room::Private::removeMemberFromMap(const QString& username, User* u) emit q->memberRenamed(formerNamesakes[0]); } -inline QByteArray makeErrorStr(const Event& e, QByteArray msg) +inline auto makeErrorStr(const Event& e, QByteArray msg) { return msg.append("; event dump follows:\n").append(e.originalJson()); } @@ -499,7 +499,7 @@ void Room::Private::addMember(User *u) { insertMemberIntoMap(u); connect(u, &User::nameChanged, q, - [=] (User* u, const QString& newName) { renameMember(u, newName); }); + bind(&Private::renameMember, this, _1, _2)); emit q->userAdded(u); } } @@ -660,7 +660,7 @@ void Room::Private::getPreviousContent(int limit) { roomMessagesJob = connection->callApi<RoomMessagesJob>(id, prevBatch, limit); - connect( roomMessagesJob, &RoomMessagesJob::result, [=]() { + connect( roomMessagesJob, &RoomMessagesJob::result, [=] { if( !roomMessagesJob->error() ) { addHistoricalMessageEvents(roomMessagesJob->releaseEvents()); @@ -780,8 +780,7 @@ void Room::Private::processRedaction(RoomEventPtr redactionEvent) } auto keepContentKeys = find_if(keepContentKeysMap.begin(), keepContentKeysMap.end(), - [&](const std::pair<EventType,QStringList>& t) - { return ti->type() == t.first; } ); + [&ti](const auto& t) { return ti->type() == t.first; } ); if (keepContentKeys == keepContentKeysMap.end()) { originalJson.remove("content"); @@ -1226,9 +1225,9 @@ bool MemberSorter::operator()(User *u1, User *u2) const { auto n1 = room->roomMembername(u1); auto n2 = room->roomMembername(u2); - if (n1[0] == '@') + if (n1.startsWith('@')) n1.remove(0, 1); - if (n2[0] == '@') + if (n2.startsWith('@')) n2.remove(0, 1); return n1.localeAwareCompare(n2) < 0; } @@ -18,8 +18,9 @@ #pragma once -#include <memory> -#include <deque> +#include "jobs/syncjob.h" +#include "events/roommessageevent.h" +#include "joinstate.h" #include <QtCore/QList> #include <QtCore/QStringList> @@ -27,9 +28,9 @@ #include <QtCore/QJsonObject> #include <QtGui/QPixmap> -#include "jobs/syncjob.h" -#include "events/roommessageevent.h" -#include "joinstate.h" +#include <memory> +#include <deque> +#include <utility> namespace QMatrixClient { @@ -58,8 +59,7 @@ namespace QMatrixClient // Used for event redaction RoomEventPtr replaceEvent(RoomEventPtr&& other) { - evt.swap(other); - return move(other); + return std::exchange(evt, std::move(other)); } private: |