/usr/include/Poco/StrategyCollection.h is in libpoco-dev 1.8.0.1-1ubuntu4.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 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
|