From ae1dacb7d7fb7d270d1bc363b1b90a702c32cf86 Mon Sep 17 00:00:00 2001 From: John Preston Date: Mon, 14 Aug 2017 15:47:46 +0300 Subject: [PATCH] Add base/algorithm for range-based algorithms. --- Telegram/SourceFiles/base/algorithm.h | 40 +++++++++++++++++++++++++++ Telegram/SourceFiles/stdafx.h | 3 ++ Telegram/gyp/telegram_sources.txt | 1 + 3 files changed, 44 insertions(+) create mode 100644 Telegram/SourceFiles/base/algorithm.h diff --git a/Telegram/SourceFiles/base/algorithm.h b/Telegram/SourceFiles/base/algorithm.h new file mode 100644 index 000000000..44188b05e --- /dev/null +++ b/Telegram/SourceFiles/base/algorithm.h @@ -0,0 +1,40 @@ +/* +This file is part of Telegram Desktop, +the official desktop version of Telegram messaging app, see https://telegram.org + +Telegram Desktop is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +It is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +In addition, as a special exception, the copyright holders give permission +to link the code of portions of this program with the OpenSSL library. + +Full license: https://github.com/telegramdesktop/tdesktop/blob/master/LICENSE +Copyright (c) 2014-2017 John Preston, https://desktop.telegram.org +*/ +#pragma once + +namespace base { + +template +decltype(auto) for_each(Range &&range, Method &&method) { + return std::for_each( + std::begin(std::forward(range)), + std::end(std::forward(range)), + std::forward(method)); +} + +template +decltype(auto) for_each_apply(Method &&method) { + return [&method](auto &&range) { + return for_each(std::forward(range), std::forward(method)); + }; +} + +} // namespace base diff --git a/Telegram/SourceFiles/stdafx.h b/Telegram/SourceFiles/stdafx.h index f385c4051..b8d80a520 100644 --- a/Telegram/SourceFiles/stdafx.h +++ b/Telegram/SourceFiles/stdafx.h @@ -64,6 +64,9 @@ Copyright (c) 2014-2017 John Preston, https://desktop.telegram.org #include #include +#include "base/variant.h" +#include "base/algorithm.h" + #include "core/basic_types.h" #include "logs.h" #include "core/utils.h" diff --git a/Telegram/gyp/telegram_sources.txt b/Telegram/gyp/telegram_sources.txt index 66b53b254..c2e5a3e87 100644 --- a/Telegram/gyp/telegram_sources.txt +++ b/Telegram/gyp/telegram_sources.txt @@ -1,3 +1,4 @@ +<(src_loc)/base/algorithm.h <(src_loc)/base/build_config.h <(src_loc)/base/flat_map.h <(src_loc)/base/flat_set.h