From f11fdc2915e242d30ef2a1a596e5bd15629551e6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jaakko=20Kera=CC=88nen?= Date: Fri, 11 May 2018 09:58:20 +0300 Subject: [PATCH] libcore: Mapping a container to a different type of container --- doomsday/libs/core/include/de/data/string.h | 2 +- doomsday/libs/core/include/de/libcore.h | 11 +++++++++++ doomsday/libs/core/src/data/string.cpp | 4 ++-- 3 files changed, 14 insertions(+), 3 deletions(-) diff --git a/doomsday/libs/core/include/de/data/string.h b/doomsday/libs/core/include/de/data/string.h index faf1ad743a..bb0db01f9f 100644 --- a/doomsday/libs/core/include/de/data/string.h +++ b/doomsday/libs/core/include/de/data/string.h @@ -443,7 +443,7 @@ class DENG2_PUBLIC String : public QString static void advanceFormat(String::const_iterator &i, String::const_iterator const &end); - static String join(QList const &stringList, String const &sep = String()); + static String join(QList const &stringList, String const &sep = {}); }; /** diff --git a/doomsday/libs/core/include/de/libcore.h b/doomsday/libs/core/include/de/libcore.h index 8bc570366a..7945067fa8 100644 --- a/doomsday/libs/core/include/de/libcore.h +++ b/doomsday/libs/core/include/de/libcore.h @@ -650,6 +650,17 @@ inline OutContainer map(const InContainer &input, Func func) { return out; } +template +inline OutContainer map(const InContainer &input, + std::function func) { + OutContainer out; + for (auto i = input.begin(); i != input.end(); ++i) { + out.push_back(func(*i)); + } + return out; +} + template inline ContainerType filter(ContainerType const &c, std::function func) { diff --git a/doomsday/libs/core/src/data/string.cpp b/doomsday/libs/core/src/data/string.cpp index f25bdc2bc3..403dd20c53 100644 --- a/doomsday/libs/core/src/data/string.cpp +++ b/doomsday/libs/core/src/data/string.cpp @@ -609,9 +609,9 @@ void String::advanceFormat(String::const_iterator &i, String::const_iterator con } } -String String::join(QList const &stringList, String const &sep) +String String::join(StringList const &stringList, String const &sep) { - if (stringList.isEmpty()) return ""; + if (stringList.isEmpty()) return {}; String joined; QTextStream os(&joined);