summaryrefslogtreecommitdiff
path: root/src/proxyutils.h
diff options
context:
space:
mode:
authorMikaƫl Capelle <capelle.mikael@gmail.com>2020-10-21 20:08:01 +0200
committerGitHub <noreply@github.com>2020-10-21 20:08:01 +0200
commit52cfb8e8a7609c8b763652e1575a769dd5fe1b02 (patch)
tree6febde8afe518f8f33a1067b734cf2faadb760ca /src/proxyutils.h
parentef82ddd36ae30e654841257634b26fa563319f9b (diff)
parent3c1f206d7d29d3b3d27082aca23dafd87a95a71b (diff)
Merge pull request #1260 from Holt59/iplugin-setactive-fix
Fix usage of isActive
Diffstat (limited to 'src/proxyutils.h')
-rw-r--r--src/proxyutils.h26
1 files changed, 26 insertions, 0 deletions
diff --git a/src/proxyutils.h b/src/proxyutils.h
new file mode 100644
index 00000000..4c1717d8
--- /dev/null
+++ b/src/proxyutils.h
@@ -0,0 +1,26 @@
+#ifndef PROXYUTILS_H
+#define PROXYUTILS_H
+
+#include <type_traits>
+
+#include "organizerproxy.h"
+
+namespace MOShared {
+
+ template <class Fn, class T = int>
+ auto callIfPluginActive(OrganizerProxy* proxy, Fn&& callback, T defaultReturn = T{}) {
+ return [fn = std::forward<Fn>(callback), proxy, defaultReturn](auto&& ...args) {
+ if (proxy->plugin()->isActive()) {
+ return fn(std::forward<decltype(args)>(args)...);
+ }
+ else {
+ if constexpr (!std::is_same_v<std::invoke_result_t<std::decay_t<Fn>, decltype(args)... >, void>) {
+ return defaultReturn;
+ }
+ }
+ };
+ }
+
+}
+
+#endif