mirror of
https://github.com/pocoproject/poco.git
synced 2025-12-11 02:25:59 +01:00
Poco::BasicEvent improvements and preparations for future support of lambdas/std::function
This commit is contained in:
@@ -35,6 +35,8 @@ class NotificationStrategy
|
||||
/// but does not need to inherit from NotificationStrategy.
|
||||
{
|
||||
public:
|
||||
typedef TDelegate* DelegateHandle;
|
||||
|
||||
NotificationStrategy()
|
||||
{
|
||||
}
|
||||
@@ -46,13 +48,17 @@ public:
|
||||
virtual void notify(const void* sender, TArgs& arguments) = 0;
|
||||
/// Sends a notification to all registered delegates.
|
||||
|
||||
virtual void add(const TDelegate& delegate) = 0;
|
||||
virtual DelegateHandle add(const TDelegate& delegate) = 0;
|
||||
/// Adds a delegate to the strategy.
|
||||
|
||||
virtual void remove(const TDelegate& delegate) = 0;
|
||||
/// Removes a delegate from the strategy, if found.
|
||||
/// Does nothing if the delegate has not been added.
|
||||
|
||||
virtual void remove(DelegateHandle delegateHandle) = 0;
|
||||
/// Removes a delegate from the strategy, if found.
|
||||
/// Does nothing if the delegate has not been added.
|
||||
|
||||
virtual void clear() = 0;
|
||||
/// Removes all delegates from the strategy.
|
||||
|
||||
@@ -60,8 +66,9 @@ public:
|
||||
/// Returns false if the strategy contains at least one delegate.
|
||||
};
|
||||
|
||||
|
||||
template <class TDelegate>
|
||||
class NotificationStrategy<void,TDelegate>
|
||||
class NotificationStrategy<void, TDelegate>
|
||||
/// The interface that all notification strategies must implement.
|
||||
///
|
||||
/// Note: Event is based on policy-driven design, so every strategy implementation
|
||||
@@ -69,6 +76,8 @@ class NotificationStrategy<void,TDelegate>
|
||||
/// but does not need to inherit from NotificationStrategy.
|
||||
{
|
||||
public:
|
||||
typedef TDelegate* DelegateHandle;
|
||||
|
||||
NotificationStrategy()
|
||||
{
|
||||
}
|
||||
@@ -80,13 +89,17 @@ public:
|
||||
virtual void notify(const void* sender) = 0;
|
||||
/// Sends a notification to all registered delegates.
|
||||
|
||||
virtual void add(const TDelegate& delegate) = 0;
|
||||
virtual DelegateHandle add(const TDelegate& delegate) = 0;
|
||||
/// Adds a delegate to the strategy.
|
||||
|
||||
virtual void remove(const TDelegate& delegate) = 0;
|
||||
/// Removes a delegate from the strategy, if found.
|
||||
/// Does nothing if the delegate has not been added.
|
||||
|
||||
virtual void remove(DelegateHandle delegateHandle) = 0;
|
||||
/// Removes a delegate from the strategy, if found.
|
||||
/// Does nothing if the delegate has not been added.
|
||||
|
||||
virtual void clear() = 0;
|
||||
/// Removes all delegates from the strategy.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user