summaryrefslogtreecommitdiff
path: root/src/proxyutils.h
diff options
context:
space:
mode:
authorMikaƫl Capelle <capelle.mikael@gmail.com>2023-07-09 17:36:03 +0200
committerGitHub <noreply@github.com>2023-07-09 17:36:03 +0200
commitef94aee28464039672b277243a0181ae93550d6c (patch)
tree0575a68af5f154e9d6d0738edbaefb16a11d6f5c /src/proxyutils.h
parent7d6cb8528d20e36a4cee822263865ee2f7f32481 (diff)
parent3de050e9c03e553f7ae3f780f6bd080a30ae123e (diff)
Merge pull request #1839 from Holt59/ci/initial-gh-action-for-build
Clang-Format + Github Workflow
Diffstat (limited to 'src/proxyutils.h')
-rw-r--r--src/proxyutils.h63
1 files changed, 36 insertions, 27 deletions
diff --git a/src/proxyutils.h b/src/proxyutils.h
index 6c85ba14..7aebf315 100644
--- a/src/proxyutils.h
+++ b/src/proxyutils.h
@@ -5,37 +5,46 @@
#include "organizerproxy.h"
-namespace MOShared {
+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->isPluginEnabled(proxy->plugin())) {
- return fn(std::forward<decltype(args)>(args)...);
+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->isPluginEnabled(proxy->plugin())) {
+ 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;
}
- else {
- if constexpr (!std::is_same_v<std::invoke_result_t<std::decay_t<Fn>, decltype(args)... >, void>) {
- return defaultReturn;
- }
- }
- };
- }
-
- // We need to connect to the organizer.
- template <class Signal, class T = int>
- auto callSignalIfPluginActive(OrganizerProxy* proxy, const Signal& signal, T defaultReturn = T{}) {
- return callIfPluginActive(proxy, [&signal](auto&&... args) {
- return signal(std::forward<decltype(args)>(args)...);
- }, defaultReturn);
- }
+ }
+ };
+}
- template <class Signal, class T = int>
- auto callSignalAlways(const Signal& signal) {
- return [&signal](auto&&... args) {
- return signal(std::forward<decltype(args)>(args)...);
- };
- }
+// We need to connect to the organizer.
+template <class Signal, class T = int>
+auto callSignalIfPluginActive(OrganizerProxy* proxy, const Signal& signal,
+ T defaultReturn = T{})
+{
+ return callIfPluginActive(
+ proxy,
+ [&signal](auto&&... args) {
+ return signal(std::forward<decltype(args)>(args)...);
+ },
+ defaultReturn);
+}
+template <class Signal, class T = int>
+auto callSignalAlways(const Signal& signal)
+{
+ return [&signal](auto&&... args) {
+ return signal(std::forward<decltype(args)>(args)...);
+ };
}
+} // namespace MOShared
+
#endif