diff options
author | orivej <orivej@yandex-team.ru> | 2022-02-10 16:45:01 +0300 |
---|---|---|
committer | Daniil Cherednik <dcherednik@yandex-team.ru> | 2022-02-10 16:45:01 +0300 |
commit | 2d37894b1b037cf24231090eda8589bbb44fb6fc (patch) | |
tree | be835aa92c6248212e705f25388ebafcf84bc7a1 /contrib/libs/poco/Foundation/include/Poco/StrategyCollection.h | |
parent | 718c552901d703c502ccbefdfc3c9028d608b947 (diff) | |
download | ydb-2d37894b1b037cf24231090eda8589bbb44fb6fc.tar.gz |
Restoring authorship annotation for <orivej@yandex-team.ru>. Commit 2 of 2.
Diffstat (limited to 'contrib/libs/poco/Foundation/include/Poco/StrategyCollection.h')
-rw-r--r-- | contrib/libs/poco/Foundation/include/Poco/StrategyCollection.h | 266 |
1 files changed, 133 insertions, 133 deletions
diff --git a/contrib/libs/poco/Foundation/include/Poco/StrategyCollection.h b/contrib/libs/poco/Foundation/include/Poco/StrategyCollection.h index 14d561d6e3..6372d46620 100644 --- a/contrib/libs/poco/Foundation/include/Poco/StrategyCollection.h +++ b/contrib/libs/poco/Foundation/include/Poco/StrategyCollection.h @@ -1,133 +1,133 @@ -// -// StrategyCollection.h -// -// Library: Foundation -// Package: Cache -// Module: StrategyCollection -// -// Definition of the StrategyCollection class. -// -// Copyright (c) 2006, Applied Informatics Software Engineering GmbH. -// and Contributors. -// -// SPDX-License-Identifier: BSL-1.0 -// - - -#ifndef Foundation_StrategyCollection_INCLUDED -#define Foundation_StrategyCollection_INCLUDED - - -#include "Poco/KeyValueArgs.h" -#include "Poco/ValidArgs.h" -#include "Poco/AbstractStrategy.h" -#include "Poco/SharedPtr.h" -#include <vector> - - -namespace Poco { - - -template <class TKey, class TValue> -class StrategyCollection: public AbstractStrategy<TKey, TValue> - /// An StrategyCollection is a decorator masking n collections as a single one. -{ -public: - typedef std::vector<SharedPtr<AbstractStrategy<TKey, TValue> > > Strategies; - typedef typename Strategies::iterator Iterator; - typedef typename Strategies::const_iterator ConstIterator; - -public: - StrategyCollection() - { - } - - ~StrategyCollection() - { - } - - void pushBack(AbstractStrategy<TKey, TValue>* pStrat) - /// Adds an AbstractStrategy to the collection. Class takes ownership of pointer - { - _strategies.push_back(SharedPtr<AbstractStrategy<TKey, TValue> >(pStrat)); - } - - void popBack() - /// Removes the last added AbstractStrategy from the collection. - { - _strategies.pop_back(); - } - - void onAdd(const void* pSender, const KeyValueArgs <TKey, TValue>& key) - /// Adds the key to the strategy. - /// If for the key already an entry exists, it will be overwritten. - { - Iterator it = _strategies.begin(); - Iterator endIt = _strategies.end(); - for (; it != endIt; ++it) - { - (*it)->onAdd(pSender, key); - } - } - - void onRemove(const void* pSender, const TKey& key) - /// Removes an entry from the strategy. If the entry is not found - /// the remove is ignored. - { - Iterator it = _strategies.begin(); - Iterator endIt = _strategies.end(); - for (; it != endIt; ++it) - { - (*it)->onRemove(pSender, key); - } - } - - void onGet(const void* pSender, const TKey& key) - { - Iterator it = _strategies.begin(); - Iterator endIt = _strategies.end(); - for (; it != endIt; ++it) - { - (*it)->onGet(pSender, key); - } - } - - void onClear(const void* pSender, const EventArgs& args) - { - Iterator it = _strategies.begin(); - Iterator endIt = _strategies.end(); - for (; it != endIt; ++it) - { - (*it)->onClear(pSender, args); - } - } - - void onIsValid(const void* pSender, ValidArgs<TKey>& key) - { - Iterator it = _strategies.begin(); - Iterator endIt = _strategies.end(); - for (; it != endIt && key.isValid(); ++it) - { - (*it)->onIsValid(pSender, key); - } - } - - void onReplace(const void* pSender, std::set<TKey>& elemsToRemove) - { - Iterator it = _strategies.begin(); - Iterator endIt = _strategies.end(); - for (; it != endIt; ++it) - { - (*it)->onReplace(pSender, elemsToRemove); - } - } - -protected: - Strategies _strategies; -}; - - -} // namespace Poco - - -#endif // Foundation_StrategyCollection_INCLUDED +// +// StrategyCollection.h +// +// Library: Foundation +// Package: Cache +// Module: StrategyCollection +// +// Definition of the StrategyCollection class. +// +// Copyright (c) 2006, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#ifndef Foundation_StrategyCollection_INCLUDED +#define Foundation_StrategyCollection_INCLUDED + + +#include "Poco/KeyValueArgs.h" +#include "Poco/ValidArgs.h" +#include "Poco/AbstractStrategy.h" +#include "Poco/SharedPtr.h" +#include <vector> + + +namespace Poco { + + +template <class TKey, class TValue> +class StrategyCollection: public AbstractStrategy<TKey, TValue> + /// An StrategyCollection is a decorator masking n collections as a single one. +{ +public: + typedef std::vector<SharedPtr<AbstractStrategy<TKey, TValue> > > Strategies; + typedef typename Strategies::iterator Iterator; + typedef typename Strategies::const_iterator ConstIterator; + +public: + StrategyCollection() + { + } + + ~StrategyCollection() + { + } + + void pushBack(AbstractStrategy<TKey, TValue>* pStrat) + /// Adds an AbstractStrategy to the collection. Class takes ownership of pointer + { + _strategies.push_back(SharedPtr<AbstractStrategy<TKey, TValue> >(pStrat)); + } + + void popBack() + /// Removes the last added AbstractStrategy from the collection. + { + _strategies.pop_back(); + } + + void onAdd(const void* pSender, const KeyValueArgs <TKey, TValue>& key) + /// Adds the key to the strategy. + /// If for the key already an entry exists, it will be overwritten. + { + Iterator it = _strategies.begin(); + Iterator endIt = _strategies.end(); + for (; it != endIt; ++it) + { + (*it)->onAdd(pSender, key); + } + } + + void onRemove(const void* pSender, const TKey& key) + /// Removes an entry from the strategy. If the entry is not found + /// the remove is ignored. + { + Iterator it = _strategies.begin(); + Iterator endIt = _strategies.end(); + for (; it != endIt; ++it) + { + (*it)->onRemove(pSender, key); + } + } + + void onGet(const void* pSender, const TKey& key) + { + Iterator it = _strategies.begin(); + Iterator endIt = _strategies.end(); + for (; it != endIt; ++it) + { + (*it)->onGet(pSender, key); + } + } + + void onClear(const void* pSender, const EventArgs& args) + { + Iterator it = _strategies.begin(); + Iterator endIt = _strategies.end(); + for (; it != endIt; ++it) + { + (*it)->onClear(pSender, args); + } + } + + void onIsValid(const void* pSender, ValidArgs<TKey>& key) + { + Iterator it = _strategies.begin(); + Iterator endIt = _strategies.end(); + for (; it != endIt && key.isValid(); ++it) + { + (*it)->onIsValid(pSender, key); + } + } + + void onReplace(const void* pSender, std::set<TKey>& elemsToRemove) + { + Iterator it = _strategies.begin(); + Iterator endIt = _strategies.end(); + for (; it != endIt; ++it) + { + (*it)->onReplace(pSender, elemsToRemove); + } + } + +protected: + Strategies _strategies; +}; + + +} // namespace Poco + + +#endif // Foundation_StrategyCollection_INCLUDED |