aboutsummaryrefslogtreecommitdiff
path: root/include/cru/base/Event.h
diff options
context:
space:
mode:
authorYuqian Yang <crupest@crupest.life>2025-11-16 17:14:20 +0800
committerYuqian Yang <crupest@crupest.life>2025-11-16 17:14:20 +0800
commit1ce8866e5b88da6cc4b7cd4d3440f7d70c7be5db (patch)
treec43f76eb308ed59570e61ed647371cce5e68d32e /include/cru/base/Event.h
parent1ef4651c4002eb3a155bcd36fed1e5b6b63b1c80 (diff)
downloadcru-1ce8866e5b88da6cc4b7cd4d3440f7d70c7be5db.tar.gz
cru-1ce8866e5b88da6cc4b7cd4d3440f7d70c7be5db.tar.bz2
cru-1ce8866e5b88da6cc4b7cd4d3440f7d70c7be5db.zip
Remove SelfResolvable.
Diffstat (limited to 'include/cru/base/Event.h')
-rw-r--r--include/cru/base/Event.h19
1 files changed, 6 insertions, 13 deletions
diff --git a/include/cru/base/Event.h b/include/cru/base/Event.h
index 226c2ea4..276c313f 100644
--- a/include/cru/base/Event.h
+++ b/include/cru/base/Event.h
@@ -1,8 +1,6 @@
#pragma once
#include "Base.h"
-#include "SelfResolvable.h"
-
#include <algorithm>
#include <cassert>
#include <functional>
@@ -13,7 +11,7 @@
namespace cru {
class EventHandlerRevoker;
-class EventBase : public Object, public SelfResolvable<EventBase> {
+class EventBase : public Object {
friend EventHandlerRevoker;
public:
@@ -36,28 +34,23 @@ class EventHandlerRevoker {
friend EventBase;
private:
- EventHandlerRevoker(ObjectResolver<EventBase>&& resolver,
- EventBase::EventHandlerToken token)
- : resolver_(std::move(resolver)), token_(token) {}
+ EventHandlerRevoker(EventBase* event, EventBase::EventHandlerToken token)
+ : event_(event), token_(token) {}
public:
/**
* Revoke the registered handler. If the event has already been destroyed or
* the handler is already revoked, nothing will be done.
*/
- void operator()() const {
- if (const auto event = resolver_.Resolve()) {
- event->RemoveHandler(token_);
- }
- }
+ void operator()() const { event_->RemoveHandler(token_); }
private:
- ObjectResolver<EventBase> resolver_;
+ EventBase* event_;
EventBase::EventHandlerToken token_;
};
inline EventHandlerRevoker EventBase::CreateRevoker(EventHandlerToken token) {
- return EventHandlerRevoker(CreateResolver(), token);
+ return EventHandlerRevoker(this, token);
}
struct IBaseEvent : public virtual Interface {