24 #include <unordered_map> 29 constexpr
size_t MAX_CACHE_SIZE = 1000;
43 template <
size_t M,
class T,
class K,
typename ... P>
46 std::unordered_map<K, std::unique_ptr<T>> mStored;
52 T *
store(
const K &key,
const P&... parameters) {
53 if (mStored.find(key) != mStored.end()) {
54 return mStored[key].get();
56 if (mStored.size() >= M) {
59 mStored[key] = std::make_unique<T>(parameters...);
60 return mStored[key].get();
66 T *
store(T *item,
const K &key) {
67 if (mStored.find(key) != mStored.end()) {
68 if (
nullptr != item) {
71 return mStored[key].get();
73 if (mStored.size() >= M) {
76 mStored[key] = std::unique_ptr<T>(item);
77 return mStored[key].get();
83 T*
get(
const K &key) {
84 if (mStored.find(key) != mStored.end()) {
85 return mStored[key].get();
93 decltype(std::begin(mStored))
begin() {
94 return std::begin(mStored);
100 decltype(std::end(mStored))
end() {
101 return std::end(mStored);
107 decltype(mStored.erase(K()))
erase (
const K& key) {
108 return mStored.erase(key);
115 return mStored.size();
decltype(mStored.erase(K())) erase(const K &key)
erase
Definition: TCache.h:107
T * store(T *item, const K &key)
Add already allocated item to manager.
Definition: TCache.h:66
T * store(const K &key, const P &...parameters)
Add new allocated item to manager.
Definition: TCache.h:52
Basic manager of composites.
Definition: TCache.h:44
decltype(std::end(mStored)) end()
end
Definition: TCache.h:100
size_t size()
return current size
Definition: TCache.h:114
decltype(std::begin(mStored)) begin()
begin
Definition: TCache.h:93