diff options
author | orivej <orivej@yandex-team.ru> | 2022-02-10 16:44:49 +0300 |
---|---|---|
committer | Daniil Cherednik <dcherednik@yandex-team.ru> | 2022-02-10 16:44:49 +0300 |
commit | 718c552901d703c502ccbefdfc3c9028d608b947 (patch) | |
tree | 46534a98bbefcd7b1f3faa5b52c138ab27db75b7 /contrib/libs/poco/Foundation/include/Poco/PriorityStrategy.h | |
parent | e9656aae26e0358d5378e5b63dcac5c8dbe0e4d0 (diff) | |
download | ydb-718c552901d703c502ccbefdfc3c9028d608b947.tar.gz |
Restoring authorship annotation for <orivej@yandex-team.ru>. Commit 1 of 2.
Diffstat (limited to 'contrib/libs/poco/Foundation/include/Poco/PriorityStrategy.h')
-rw-r--r-- | contrib/libs/poco/Foundation/include/Poco/PriorityStrategy.h | 460 |
1 files changed, 230 insertions, 230 deletions
diff --git a/contrib/libs/poco/Foundation/include/Poco/PriorityStrategy.h b/contrib/libs/poco/Foundation/include/Poco/PriorityStrategy.h index 65d67a4491..f4eb81a3a0 100644 --- a/contrib/libs/poco/Foundation/include/Poco/PriorityStrategy.h +++ b/contrib/libs/poco/Foundation/include/Poco/PriorityStrategy.h @@ -1,230 +1,230 @@ -// -// PriorityStrategy.h -// -// Library: Foundation -// Package: Events -// Module: PrioritytStrategy -// -// Implementation of the DefaultStrategy template. -// -// Copyright (c) 2006-2011, Applied Informatics Software Engineering GmbH. -// and Contributors. -// -// SPDX-License-Identifier: BSL-1.0 -// - - -#ifndef Foundation_PriorityStrategy_INCLUDED -#define Foundation_PriorityStrategy_INCLUDED - - -#include "Poco/NotificationStrategy.h" -#include "Poco/SharedPtr.h" -#include <vector> - - -namespace Poco { - - -template <class TArgs, class TDelegate> -class PriorityStrategy: public NotificationStrategy<TArgs, TDelegate> - /// NotificationStrategy for PriorityEvent. - /// - /// Delegates are kept in a std::vector<>, ordered - /// by their priority. -{ -public: - typedef TDelegate* DelegateHandle; - typedef SharedPtr<TDelegate> DelegatePtr; - typedef std::vector<DelegatePtr> Delegates; - typedef typename Delegates::iterator Iterator; - -public: - PriorityStrategy() - { - } - - PriorityStrategy(const PriorityStrategy& s): - _delegates(s._delegates) - { - } - - ~PriorityStrategy() - { - } - - void notify(const void* sender, TArgs& arguments) - { - for (Iterator it = _delegates.begin(); it != _delegates.end(); ++it) - { - (*it)->notify(sender, arguments); - } - } - - DelegateHandle add(const TDelegate& delegate) - { - for (Iterator it = _delegates.begin(); it != _delegates.end(); ++it) - { - if ((*it)->priority() > delegate.priority()) - { - DelegatePtr pDelegate(static_cast<TDelegate*>(delegate.clone())); - _delegates.insert(it, pDelegate); - return pDelegate.get(); - } - } - DelegatePtr pDelegate(static_cast<TDelegate*>(delegate.clone())); - _delegates.push_back(pDelegate); - return pDelegate.get(); - } - - void remove(const TDelegate& delegate) - { - for (Iterator it = _delegates.begin(); it != _delegates.end(); ++it) - { - if (delegate.equals(**it)) - { - (*it)->disable(); - _delegates.erase(it); - return; - } - } - } - - void remove(DelegateHandle delegateHandle) - { - for (Iterator it = _delegates.begin(); it != _delegates.end(); ++it) - { - if (*it == delegateHandle) - { - (*it)->disable(); - _delegates.erase(it); - return; - } - } - } - - PriorityStrategy& operator = (const PriorityStrategy& s) - { - if (this != &s) - { - _delegates = s._delegates; - } - return *this; - } - - void clear() - { - for (Iterator it = _delegates.begin(); it != _delegates.end(); ++it) - { - (*it)->disable(); - } - _delegates.clear(); - } - - bool empty() const - { - return _delegates.empty(); - } - -protected: - Delegates _delegates; -}; - - -template <class TDelegate> -class PriorityStrategy<void, TDelegate> - /// NotificationStrategy for PriorityEvent. - /// - /// Delegates are kept in a std::vector<>, ordered - /// by their priority. -{ -public: - typedef TDelegate* DelegateHandle; - typedef SharedPtr<TDelegate> DelegatePtr; - typedef std::vector<DelegatePtr> Delegates; - typedef typename Delegates::iterator Iterator; - -public: - - void notify(const void* sender) - { - for (Iterator it = _delegates.begin(); it != _delegates.end(); ++it) - { - (*it)->notify(sender); - } - } - - DelegateHandle add(const TDelegate& delegate) - { - for (Iterator it = _delegates.begin(); it != _delegates.end(); ++it) - { - if ((*it)->priority() > delegate.priority()) - { - DelegatePtr pDelegate(static_cast<TDelegate*>(delegate.clone())); - _delegates.insert(it, pDelegate); - return pDelegate.get(); - } - } - DelegatePtr pDelegate(static_cast<TDelegate*>(delegate.clone())); - _delegates.push_back(pDelegate); - return pDelegate.get(); - } - - void remove(const TDelegate& delegate) - { - for (Iterator it = _delegates.begin(); it != _delegates.end(); ++it) - { - if (delegate.equals(**it)) - { - (*it)->disable(); - _delegates.erase(it); - return; - } - } - } - - void remove(DelegateHandle delegateHandle) - { - for (Iterator it = _delegates.begin(); it != _delegates.end(); ++it) - { - if (*it == delegateHandle) - { - (*it)->disable(); - _delegates.erase(it); - return; - } - } - } - - PriorityStrategy& operator = (const PriorityStrategy& s) - { - if (this != &s) - { - _delegates = s._delegates; - } - return *this; - } - - void clear() - { - for (Iterator it = _delegates.begin(); it != _delegates.end(); ++it) - { - (*it)->disable(); - } - _delegates.clear(); - } - - bool empty() const - { - return _delegates.empty(); - } - -protected: - Delegates _delegates; -}; - - -} // namespace Poco - - -#endif // Foundation_PriorityStrategy_INCLUDED +// +// PriorityStrategy.h +// +// Library: Foundation +// Package: Events +// Module: PrioritytStrategy +// +// Implementation of the DefaultStrategy template. +// +// Copyright (c) 2006-2011, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#ifndef Foundation_PriorityStrategy_INCLUDED +#define Foundation_PriorityStrategy_INCLUDED + + +#include "Poco/NotificationStrategy.h" +#include "Poco/SharedPtr.h" +#include <vector> + + +namespace Poco { + + +template <class TArgs, class TDelegate> +class PriorityStrategy: public NotificationStrategy<TArgs, TDelegate> + /// NotificationStrategy for PriorityEvent. + /// + /// Delegates are kept in a std::vector<>, ordered + /// by their priority. +{ +public: + typedef TDelegate* DelegateHandle; + typedef SharedPtr<TDelegate> DelegatePtr; + typedef std::vector<DelegatePtr> Delegates; + typedef typename Delegates::iterator Iterator; + +public: + PriorityStrategy() + { + } + + PriorityStrategy(const PriorityStrategy& s): + _delegates(s._delegates) + { + } + + ~PriorityStrategy() + { + } + + void notify(const void* sender, TArgs& arguments) + { + for (Iterator it = _delegates.begin(); it != _delegates.end(); ++it) + { + (*it)->notify(sender, arguments); + } + } + + DelegateHandle add(const TDelegate& delegate) + { + for (Iterator it = _delegates.begin(); it != _delegates.end(); ++it) + { + if ((*it)->priority() > delegate.priority()) + { + DelegatePtr pDelegate(static_cast<TDelegate*>(delegate.clone())); + _delegates.insert(it, pDelegate); + return pDelegate.get(); + } + } + DelegatePtr pDelegate(static_cast<TDelegate*>(delegate.clone())); + _delegates.push_back(pDelegate); + return pDelegate.get(); + } + + void remove(const TDelegate& delegate) + { + for (Iterator it = _delegates.begin(); it != _delegates.end(); ++it) + { + if (delegate.equals(**it)) + { + (*it)->disable(); + _delegates.erase(it); + return; + } + } + } + + void remove(DelegateHandle delegateHandle) + { + for (Iterator it = _delegates.begin(); it != _delegates.end(); ++it) + { + if (*it == delegateHandle) + { + (*it)->disable(); + _delegates.erase(it); + return; + } + } + } + + PriorityStrategy& operator = (const PriorityStrategy& s) + { + if (this != &s) + { + _delegates = s._delegates; + } + return *this; + } + + void clear() + { + for (Iterator it = _delegates.begin(); it != _delegates.end(); ++it) + { + (*it)->disable(); + } + _delegates.clear(); + } + + bool empty() const + { + return _delegates.empty(); + } + +protected: + Delegates _delegates; +}; + + +template <class TDelegate> +class PriorityStrategy<void, TDelegate> + /// NotificationStrategy for PriorityEvent. + /// + /// Delegates are kept in a std::vector<>, ordered + /// by their priority. +{ +public: + typedef TDelegate* DelegateHandle; + typedef SharedPtr<TDelegate> DelegatePtr; + typedef std::vector<DelegatePtr> Delegates; + typedef typename Delegates::iterator Iterator; + +public: + + void notify(const void* sender) + { + for (Iterator it = _delegates.begin(); it != _delegates.end(); ++it) + { + (*it)->notify(sender); + } + } + + DelegateHandle add(const TDelegate& delegate) + { + for (Iterator it = _delegates.begin(); it != _delegates.end(); ++it) + { + if ((*it)->priority() > delegate.priority()) + { + DelegatePtr pDelegate(static_cast<TDelegate*>(delegate.clone())); + _delegates.insert(it, pDelegate); + return pDelegate.get(); + } + } + DelegatePtr pDelegate(static_cast<TDelegate*>(delegate.clone())); + _delegates.push_back(pDelegate); + return pDelegate.get(); + } + + void remove(const TDelegate& delegate) + { + for (Iterator it = _delegates.begin(); it != _delegates.end(); ++it) + { + if (delegate.equals(**it)) + { + (*it)->disable(); + _delegates.erase(it); + return; + } + } + } + + void remove(DelegateHandle delegateHandle) + { + for (Iterator it = _delegates.begin(); it != _delegates.end(); ++it) + { + if (*it == delegateHandle) + { + (*it)->disable(); + _delegates.erase(it); + return; + } + } + } + + PriorityStrategy& operator = (const PriorityStrategy& s) + { + if (this != &s) + { + _delegates = s._delegates; + } + return *this; + } + + void clear() + { + for (Iterator it = _delegates.begin(); it != _delegates.end(); ++it) + { + (*it)->disable(); + } + _delegates.clear(); + } + + bool empty() const + { + return _delegates.empty(); + } + +protected: + Delegates _delegates; +}; + + +} // namespace Poco + + +#endif // Foundation_PriorityStrategy_INCLUDED |