diff options
author | Tobias Markmann <tm@ayena.de> | 2018-05-07 18:48:01 (GMT) |
---|---|---|
committer | Tobias Markmann <tm@ayena.de> | 2018-05-07 18:48:01 (GMT) |
commit | d9994a01bca43aab08fc67b789e71d28672c6ba1 (patch) | |
tree | bd842012bd552b953af1f52cff893a032da3a4de | |
parent | e9f6129a4ce5db25bcb6de47be94ee89357713d0 (diff) | |
download | swift-d9994a01bca43aab08fc67b789e71d28672c6ba1.zip swift-d9994a01bca43aab08fc67b789e71d28672c6ba1.tar.bz2 |
Replace boost::lambda with C++11 lambdas
Test-Information:
Builds on macOS 10.13.4 with clang trunk. All unit and
integration tests pass. Produces fewer warnings with clang
trunk (previously reported marked-unused-but-used warnings).
Change-Id: I849d764537cfbc380155e87b033dc5e517b3c342
-rw-r--r-- | Sluift/client.cpp | 9 | ||||
-rw-r--r-- | Sluift/component.cpp | 9 | ||||
-rw-r--r-- | Swift/Controllers/ContactSuggester.cpp | 11 | ||||
-rw-r--r-- | Swift/QtUI/QtStatusWidget.cpp | 12 | ||||
-rw-r--r-- | Swiften/EventLoop/EventLoop.cpp | 11 | ||||
-rw-r--r-- | Swiften/Network/DomainNameServiceQuery.cpp | 10 | ||||
-rw-r--r-- | Swiften/Parser/AttributeMap.cpp | 20 | ||||
-rw-r--r-- | Swiften/Parser/Tree/ParserElement.cpp | 12 |
8 files changed, 38 insertions, 56 deletions
diff --git a/Sluift/client.cpp b/Sluift/client.cpp index ae2f610..ec208bc 100644 --- a/Sluift/client.cpp +++ b/Sluift/client.cpp @@ -1,12 +1,10 @@ /* - * Copyright (c) 2013-2017 Isode Limited. + * Copyright (c) 2013-2018 Isode Limited. * All rights reserved. * See the COPYING file for more information. */ #include <boost/assign/list_of.hpp> -#include <boost/lambda/bind.hpp> -#include <boost/lambda/lambda.hpp> #include <Swiften/Base/IDGenerator.h> #include <Swiften/Disco/ClientDiscoManager.h> @@ -42,7 +40,6 @@ #include <Sluift/globals.h> using namespace Swift; -namespace lambda = boost::lambda; static inline SluiftClient* getClient(lua_State* L) { return *Lua::checkUserData<SluiftClient>(L, 1); @@ -659,7 +656,9 @@ SLUIFT_LUA_FUNCTION(Client, get_next_event) { } else if (type) { event = client->getNextEvent( - timeout, lambda::bind(&SluiftClient::Event::type, lambda::_1) == *type); + timeout, [&](const SluiftClient::Event& event) { + return event.type == *type; + }); } else { event = client->getNextEvent(timeout); diff --git a/Sluift/component.cpp b/Sluift/component.cpp index df96d43..f3c2e37 100644 --- a/Sluift/component.cpp +++ b/Sluift/component.cpp @@ -1,12 +1,10 @@ /* - * Copyright (c) 2014-2016 Isode Limited. + * Copyright (c) 2014-2018 Isode Limited. * All rights reserved. * See the COPYING file for more information. */ #include <boost/assign/list_of.hpp> -#include <boost/lambda/bind.hpp> -#include <boost/lambda/lambda.hpp> #include <Swiften/Base/IDGenerator.h> #include <Swiften/Elements/DiscoInfo.h> @@ -41,7 +39,6 @@ #include <Sluift/globals.h> using namespace Swift; -namespace lambda = boost::lambda; static inline SluiftComponent* getComponent(lua_State* L) { return *Lua::checkUserData<SluiftComponent>(L, 1); @@ -433,7 +430,9 @@ SLUIFT_LUA_FUNCTION(Component, get_next_event) { } else if (type) { event = component->getNextEvent( - timeout, lambda::bind(&SluiftComponent::Event::type, lambda::_1) == *type); + timeout, [&](const SluiftComponent::Event& event) { + return event.type == *type; + }); } else { event = component->getNextEvent(timeout); diff --git a/Swift/Controllers/ContactSuggester.cpp b/Swift/Controllers/ContactSuggester.cpp index eb27ed4..4b621db 100644 --- a/Swift/Controllers/ContactSuggester.cpp +++ b/Swift/Controllers/ContactSuggester.cpp @@ -5,7 +5,7 @@ */ /* - * Copyright (c) 2014-2016 Isode Limited. + * Copyright (c) 2014-2018 Isode Limited. * All rights reserved. * See the COPYING file for more information. */ @@ -19,16 +19,12 @@ #include <boost/algorithm/string.hpp> #include <boost/algorithm/string/find.hpp> #include <boost/bind.hpp> -#include <boost/lambda/bind.hpp> -#include <boost/lambda/lambda.hpp> #include <Swiften/Base/Algorithm.h> #include <Swiften/JID/JID.h> #include <Swift/Controllers/ContactProvider.h> -namespace lambda = boost::lambda; - namespace Swift { ContactSuggester::ContactSuggester() { @@ -60,8 +56,9 @@ std::vector<Contact::ref> ContactSuggester::getSuggestions(const std::string& se std::sort(results.begin(), results.end(), Contact::lexicographicalSortPredicate); results.erase(std::unique(results.begin(), results.end(), Contact::equalityPredicate), results.end()); - results.erase(std::remove_if(results.begin(), results.end(), !lambda::bind(&matchContact, search, lambda::_1)), - results.end()); + results.erase(std::remove_if(results.begin(), results.end(), [&](const Contact::ref contact) { + return !matchContact(search, contact); + }), results.end()); std::sort(results.begin(), results.end(), boost::bind(&Contact::sortPredicate, _1, _2, search)); return results; diff --git a/Swift/QtUI/QtStatusWidget.cpp b/Swift/QtUI/QtStatusWidget.cpp index b175e5c..5e2ba5f 100644 --- a/Swift/QtUI/QtStatusWidget.cpp +++ b/Swift/QtUI/QtStatusWidget.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2010-2016 Isode Limited. + * Copyright (c) 2010-2018 Isode Limited. * All rights reserved. * See the COPYING file for more information. */ @@ -8,9 +8,6 @@ #include <algorithm> -#include <boost/lambda/bind.hpp> -#include <boost/lambda/lambda.hpp> - #include <QApplication> #include <QBoxLayout> #include <QComboBox> @@ -32,8 +29,6 @@ #include <Swift/QtUI/QtLineEdit.h> #include <Swift/QtUI/QtSwiftUtil.h> -namespace lambda = boost::lambda; - namespace Swift { QtStatusWidget::QtStatusWidget(StatusCache* statusCache, QWidget *parent) : QWidget(parent), statusCache_(statusCache), editCursor_(Qt::IBeamCursor), viewCursor_(Qt::PointingHandCursor) { @@ -153,8 +148,9 @@ void QtStatusWidget::generateList() { } std::vector<StatusCache::PreviousStatus> previousStatuses = statusCache_->getMatches(Q2PSTRING(text), 8); for (const auto& savedStatus : previousStatuses) { - if (savedStatus.first.empty() || std::find_if(allTypes_.begin(), allTypes_.end(), - savedStatus.second == lambda::_1 && savedStatus.first == lambda::bind(&statusShowTypeToFriendlyName, lambda::_1)) != allTypes_.end()) { + if (savedStatus.first.empty() || std::find_if(allTypes_.begin(), allTypes_.end(), [&](StatusShow::Type type) { + return (savedStatus.second == type) && (savedStatus.first == statusShowTypeToFriendlyName(type)); + }) != allTypes_.end()) { continue; } QListWidgetItem* item = new QListWidgetItem(P2QSTRING(savedStatus.first), menu_); diff --git a/Swiften/EventLoop/EventLoop.cpp b/Swiften/EventLoop/EventLoop.cpp index 186616f..f6af699 100644 --- a/Swiften/EventLoop/EventLoop.cpp +++ b/Swiften/EventLoop/EventLoop.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2010-2016 Isode Limited. + * Copyright (c) 2010-2018 Isode Limited. * All rights reserved. * See the COPYING file for more information. */ @@ -10,15 +10,10 @@ #include <cassert> #include <vector> -#include <boost/bind.hpp> -#include <boost/lambda/bind.hpp> -#include <boost/lambda/lambda.hpp> #include <boost/optional.hpp> #include <Swiften/Base/Log.h> -namespace lambda = boost::lambda; - namespace Swift { inline void invokeCallback(const Event& event) { @@ -96,7 +91,9 @@ void EventLoop::removeEventsFromOwner(std::shared_ptr<EventOwner> owner) { std::lock(removeLock, eventsLock); - events_.remove_if(lambda::bind(&Event::owner, lambda::_1) == owner); + events_.remove_if([&](const Event& event) { + return event.owner == owner; + }); } } diff --git a/Swiften/Network/DomainNameServiceQuery.cpp b/Swiften/Network/DomainNameServiceQuery.cpp index 0c6c543..548c837 100644 --- a/Swiften/Network/DomainNameServiceQuery.cpp +++ b/Swiften/Network/DomainNameServiceQuery.cpp @@ -11,14 +11,11 @@ #include <iterator> #include <numeric> -#include <boost/lambda/bind.hpp> -#include <boost/lambda/lambda.hpp> #include <boost/numeric/conversion/cast.hpp> #include <Swiften/Base/RandomGenerator.h> using namespace Swift; -namespace lambda = boost::lambda; namespace { struct ResultPriorityComparator { @@ -42,9 +39,10 @@ void DomainNameServiceQuery::sortResults(std::vector<DomainNameServiceQuery::Res std::vector<DomainNameServiceQuery::Result>::iterator next = std::upper_bound(i, queries.end(), *i, comparator); if (std::distance(i, next) > 1) { std::vector<int> weights; - std::transform(i, next, std::back_inserter(weights), - /* easy hack to account for '0' weights getting at least some weight */ - lambda::bind(&Result::weight, lambda::_1) + 1); + std::transform(i, next, std::back_inserter(weights), [](const DomainNameServiceQuery::Result& result) { + /* easy hack to account for '0' weights getting at least some weight */ + return result.weight + 1; + }); for (int j = 0; j < boost::numeric_cast<int>(weights.size() - 1); ++j) { std::vector<int> cumulativeWeights; std::partial_sum( diff --git a/Swiften/Parser/AttributeMap.cpp b/Swiften/Parser/AttributeMap.cpp index c112d52..f6767de 100644 --- a/Swiften/Parser/AttributeMap.cpp +++ b/Swiften/Parser/AttributeMap.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2011-2016 Isode Limited. + * Copyright (c) 2011-2018 Isode Limited. * All rights reserved. * See the COPYING file for more information. */ @@ -8,19 +8,17 @@ #include <algorithm> -#include <boost/lambda/bind.hpp> -#include <boost/lambda/lambda.hpp> #include <boost/optional.hpp> using namespace Swift; -namespace lambda = boost::lambda; AttributeMap::AttributeMap() { } std::string AttributeMap::getAttribute(const std::string& attribute, const std::string& ns) const { - AttributeValueMap::const_iterator i = std::find_if(attributes.begin(), attributes.end(), - lambda::bind(&AttributeMap::Entry::getAttribute, lambda::_1) == Attribute(attribute, ns)); + const auto i = std::find_if(attributes.begin(), attributes.end(), [&](const Entry& entry) { + return entry.getAttribute() == Attribute(attribute, ns); + }); if (i == attributes.end()) { return ""; } @@ -30,8 +28,9 @@ std::string AttributeMap::getAttribute(const std::string& attribute, const std:: } bool AttributeMap::getBoolAttribute(const std::string& attribute, bool defaultValue) const { - AttributeValueMap::const_iterator i = std::find_if(attributes.begin(), attributes.end(), - lambda::bind(&AttributeMap::Entry::getAttribute, lambda::_1) == Attribute(attribute, "")); + const auto i = std::find_if(attributes.begin(), attributes.end(), [&](const Entry& entry) { + return entry.getAttribute() == Attribute(attribute, ""); + }); if (i == attributes.end()) { return defaultValue; } @@ -41,8 +40,9 @@ bool AttributeMap::getBoolAttribute(const std::string& attribute, bool defaultVa } boost::optional<std::string> AttributeMap::getAttributeValue(const std::string& attribute) const { - AttributeValueMap::const_iterator i = std::find_if(attributes.begin(), attributes.end(), - lambda::bind(&AttributeMap::Entry::getAttribute, lambda::_1) == Attribute(attribute, "")); + const auto i = std::find_if(attributes.begin(), attributes.end(), [&](const Entry& entry) { + return entry.getAttribute() == Attribute(attribute, ""); + }); if (i == attributes.end()) { return boost::optional<std::string>(); } diff --git a/Swiften/Parser/Tree/ParserElement.cpp b/Swiften/Parser/Tree/ParserElement.cpp index 5415945..988bc13 100644 --- a/Swiften/Parser/Tree/ParserElement.cpp +++ b/Swiften/Parser/Tree/ParserElement.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2011-2016 Isode Limited. + * Copyright (c) 2011-2018 Isode Limited. * All rights reserved. * See the COPYING file for more information. */ @@ -7,13 +7,8 @@ #include <Swiften/Parser/Tree/ParserElement.h> -#include <boost/lambda/bind.hpp> -#include <boost/lambda/lambda.hpp> - #include <Swiften/Parser/Tree/NullParserElement.h> -namespace lambda = boost::lambda; - namespace Swift { ParserElement::ParserElement(const std::string& name, const std::string& xmlns, const AttributeMap& attributes) : name_(name), xmlns_(xmlns), attributes_(attributes) { @@ -34,8 +29,9 @@ void ParserElement::appendCharacterData(const std::string& data) { std::vector<ParserElement::ref> ParserElement::getChildren(const std::string& name, const std::string& xmlns) const { std::vector<ParserElement::ref> result; - std::remove_copy_if(children_.begin(), children_.end(), std::back_inserter(result), - lambda::bind(&ParserElement::getName, *lambda::_1) != name || lambda::bind(&ParserElement::getNamespace, *lambda::_1) != xmlns); + std::remove_copy_if(children_.begin(), children_.end(), std::back_inserter(result), [&](const ParserElement::ref& element) { + return (element->getName() != name) || (element->getNamespace() != xmlns); + }); return result; } |