| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112 |
- //
- // AbstractDelegate.h
- //
- // $Id: //poco/1.4/Foundation/include/Poco/AbstractDelegate.h#4 $
- //
- // Library: Foundation
- // Package: Events
- // Module: AbstractDelegate
- //
- // Implementation of the AbstractDelegate template.
- //
- // Copyright (c) 2006-2011, Applied Informatics Software Engineering GmbH.
- // and Contributors.
- //
- // SPDX-License-Identifier: BSL-1.0
- //
- #ifndef Foundation_AbstractDelegate_INCLUDED
- #define Foundation_AbstractDelegate_INCLUDED
- #include "Poco/Foundation.h"
- namespace Poco {
- template <class TArgs>
- class AbstractDelegate
- /// Base class for Delegate and Expire.
- {
- public:
- AbstractDelegate()
- {
- }
- AbstractDelegate(const AbstractDelegate& /*del*/)
- {
- }
- virtual ~AbstractDelegate()
- {
- }
- virtual bool notify(const void* sender, TArgs& arguments) = 0;
- /// Invokes the delegate's callback function.
- /// Returns true if successful, or false if the delegate
- /// has been disabled or has expired.
- virtual bool equals(const AbstractDelegate& other) const = 0;
- /// Compares the AbstractDelegate with the other one for equality.
- virtual AbstractDelegate* clone() const = 0;
- /// Returns a deep copy of the AbstractDelegate.
- virtual void disable() = 0;
- /// Disables the delegate, which is done prior to removal.
-
- virtual const AbstractDelegate* unwrap() const
- /// Returns the unwrapped delegate. Must be overridden by decorators
- /// like Expire.
- {
- return this;
- }
- };
- template <>
- class AbstractDelegate<void>
- /// Base class for Delegate and Expire.
- {
- public:
- AbstractDelegate()
- {
- }
- AbstractDelegate(const AbstractDelegate&)
- {
- }
- virtual ~AbstractDelegate()
- {
- }
- virtual bool notify(const void* sender) = 0;
- /// Invokes the delegate's callback function.
- /// Returns true if successful, or false if the delegate
- /// has been disabled or has expired.
- virtual bool equals(const AbstractDelegate& other) const = 0;
- /// Compares the AbstractDelegate with the other one for equality.
- virtual AbstractDelegate* clone() const = 0;
- /// Returns a deep copy of the AbstractDelegate.
- virtual void disable() = 0;
- /// Disables the delegate, which is done prior to removal.
-
- virtual const AbstractDelegate* unwrap() const
- /// Returns the unwrapped delegate. Must be overridden by decorators
- /// like Expire.
- {
- return this;
- }
- };
- } // namespace Poco
- #endif // Foundation_AbstractDelegate_INCLUDED
|