diff options
author | Shauren <shauren.trinity@gmail.com> | 2025-01-17 18:38:46 +0100 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2025-01-17 18:38:46 +0100 |
commit | a43beb3e063421957b8b99095bb1a3e44268662c (patch) | |
tree | 3a404f6acf06f3a250d54038399c2cd0c40a304f /src/common/Utilities/EventProcessor.h | |
parent | 5ea4b26f7a32880834419fc3997f8b7908d30508 (diff) |
Core/Misc: Remove return type std::enable_if based SFINAE
Diffstat (limited to 'src/common/Utilities/EventProcessor.h')
-rw-r--r-- | src/common/Utilities/EventProcessor.h | 23 |
1 files changed, 12 insertions, 11 deletions
diff --git a/src/common/Utilities/EventProcessor.h b/src/common/Utilities/EventProcessor.h index 7f662e473ca..9c6e50b83da 100644 --- a/src/common/Utilities/EventProcessor.h +++ b/src/common/Utilities/EventProcessor.h @@ -21,6 +21,7 @@ #include "Define.h" #include "Duration.h" #include "Random.h" +#include <concepts> #include <map> #include <type_traits> @@ -74,7 +75,7 @@ template<typename T> class LambdaBasicEvent : public BasicEvent { public: - LambdaBasicEvent(T&& callback) : BasicEvent(), _callback(std::move(callback)) { } + explicit LambdaBasicEvent(T&& callback) : BasicEvent(), _callback(std::move(callback)) { } bool Execute(uint64, uint32) override { @@ -83,31 +84,31 @@ public: } private: - T _callback; }; -template<typename T> -using is_lambda_event = std::enable_if_t<!std::is_base_of_v<BasicEvent, std::remove_pointer_t<std::remove_cvref_t<T>>>>; - class TC_COMMON_API EventProcessor { public: EventProcessor() : m_time(0) { } + EventProcessor(EventProcessor const&) = delete; + EventProcessor(EventProcessor&&) = delete; + EventProcessor& operator=(EventProcessor const&) = delete; + EventProcessor& operator=(EventProcessor&&) = delete; ~EventProcessor(); void Update(uint32 p_time); void KillAllEvents(bool force); void AddEvent(BasicEvent* event, Milliseconds e_time, bool set_addtime = true); - template<typename T> - is_lambda_event<T> AddEvent(T&& event, Milliseconds e_time, bool set_addtime = true) { AddEvent(new LambdaBasicEvent<T>(std::move(event)), e_time, set_addtime); } + template<std::invocable<> T> + void AddEvent(T&& event, Milliseconds e_time, bool set_addtime = true) { AddEvent(new LambdaBasicEvent<T>(std::forward<T>(event)), e_time, set_addtime); } void AddEventAtOffset(BasicEvent* event, Milliseconds offset) { AddEvent(event, CalculateTime(offset)); } void AddEventAtOffset(BasicEvent* event, Milliseconds offset, Milliseconds offset2) { AddEvent(event, CalculateTime(randtime(offset, offset2))); } - template<typename T> - is_lambda_event<T> AddEventAtOffset(T&& event, Milliseconds offset) { AddEventAtOffset(new LambdaBasicEvent<T>(std::move(event)), offset); } - template<typename T> - is_lambda_event<T> AddEventAtOffset(T&& event, Milliseconds offset, Milliseconds offset2) { AddEventAtOffset(new LambdaBasicEvent<T>(std::move(event)), offset, offset2); } + template<std::invocable<> T> + void AddEventAtOffset(T&& event, Milliseconds offset) { AddEventAtOffset(new LambdaBasicEvent<T>(std::forward<T>(event)), offset); } + template<std::invocable<> T> + void AddEventAtOffset(T&& event, Milliseconds offset, Milliseconds offset2) { AddEventAtOffset(new LambdaBasicEvent<T>(std::forward<T>(event)), offset, offset2); } void ModifyEventTime(BasicEvent* event, Milliseconds newTime); Milliseconds CalculateTime(Milliseconds t_offset) const { return Milliseconds(m_time) + t_offset; } std::multimap<uint64, BasicEvent*> const& GetEvents() const { return m_events; } |