From 69625912b822f5e7630648d76af2408f013f23ba Mon Sep 17 00:00:00 2001 From: Mikaƫl Capelle Date: Mon, 28 Sep 2020 22:56:12 +0200 Subject: Add a method to retrieve the localized names of the implemented plugin interfaces. --- src/plugincontainer.cpp | 82 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 82 insertions(+) (limited to 'src/plugincontainer.cpp') diff --git a/src/plugincontainer.cpp b/src/plugincontainer.cpp index d989fac9..e6a4e877 100644 --- a/src/plugincontainer.cpp +++ b/src/plugincontainer.cpp @@ -21,6 +21,88 @@ using namespace MOShared; namespace bf = boost::fusion; +template +struct PluginTypeName; + +template <> struct PluginTypeName { static QString get() { return {}; } }; +template <> struct PluginTypeName { static QString get() { return QT_TR_NOOP("Plugin"); } }; +template <> struct PluginTypeName { static QString get() { return QT_TR_NOOP("Diagnose"); } }; +template <> struct PluginTypeName { static QString get() { return QT_TR_NOOP("Game"); } }; +template <> struct PluginTypeName { static QString get() { return QT_TR_NOOP("Installer"); } }; +template <> struct PluginTypeName { static QString get() { return QT_TR_NOOP("Mod Page"); } }; +template <> struct PluginTypeName { static QString get() { return QT_TR_NOOP("Preview"); } }; +template <> struct PluginTypeName { static QString get() { return QT_TR_NOOP("Tool"); } }; +template <> struct PluginTypeName { static QString get() { return QT_TR_NOOP("Proxy"); } }; +template <> struct PluginTypeName { static QString get() { return QT_TR_NOOP("File Mapper"); } }; + +template class Mapper, class BfMap> +struct plugin_map_iterate_impl; + +template class Mapper> +struct plugin_map_iterate_impl> +{ + template + static auto apply(Reducer const& r, U &&u, Args const&... args) { + return std::forward(u); + } +}; + +template < + class Reducer, + template class Mapper, + class K, class V, class... Ps +> +struct plugin_map_iterate_impl, Ps... >> +{ + template + static auto apply(Reducer const& r, U&& u, Args const&... args) { + return plugin_map_iterate_impl>::apply(r, r(Mapper::get(args... ), u), args... ); + } +}; + +template