26 #ifndef vtkCGNSCache_h 27 #define vtkCGNSCache_h 34 #include <unordered_map> 40 template <
typename CacheDataType>
59 typedef std::unordered_map<std::string, vtkSmartPointer<CacheDataType> > CacheMapper;
60 CacheMapper CacheData;
62 typename CacheMapper::iterator LastCacheAccess;
67 template <
typename CacheDataType>
71 this->cacheSizeLimit = -1;
72 this->LastCacheAccess = CacheData.end();
75 template <
typename CacheDataType>
78 this->cacheSizeLimit = size;
81 template <
typename CacheDataType>
84 return this->cacheSizeLimit;
87 template <
typename CacheDataType>
90 typename CacheMapper::iterator iter;
91 iter = this->CacheData.find(query);
92 if (iter == this->CacheData.end())
94 this->LastCacheAccess = iter;
98 template <
typename CacheDataType>
103 if (this->cacheSizeLimit > 0 &&
104 this->CacheData.size() >=
static_cast<size_t>(this->cacheSizeLimit))
107 this->CacheData.erase(this->LastCacheAccess);
109 this->CacheData[key] = data;
110 this->LastCacheAccess = this->CacheData.find(key);
113 template <
typename CacheDataType>
116 this->CacheData.clear();
119 #endif // vtkCGNSCache_h
void SetCacheSizeLimit(int size)
void Insert(const std::string &key, const vtkSmartPointer< CacheDataType > &data)
vtkSmartPointer< CacheDataType > Find(const std::string &query)