#include #include "Cache.h" CacheType::CacheType () { } CacheType::~CacheType () { for (unsigned int i = 0; i < _cache_elements.size (); i++) { if (_cache_elements [i].freeme) free (_cache_elements [i].values); } _cache_elements.clear (); } void CacheType::FreeCacheElement (int which_element) { if (_cache_elements [which_element].freeme) free (_cache_elements [which_element].values); _cache_elements.erase (_cache_elements.begin () + which_element); } void CacheType::AddToCache (void *vidf_ptr, VIDF_DEFS what, SDDAS_SHORT which, void *values, bool freeme) { cache_element c; c.vidf_ptr = vidf_ptr; c.what = what; c.which = which; c.values = values; c.freeme = freeme; _cache_elements.push_back (c); } void * CacheType::GetFromCache (void *vidf_ptr, VIDF_DEFS what, SDDAS_SHORT which) { unsigned int i; for (i = 0; i < _cache_elements.size (); i++) { if ((_cache_elements [i].vidf_ptr == vidf_ptr) && (_cache_elements [i].what == what) && (_cache_elements [i].which == which)) break; } if (i == _cache_elements.size ()) return NULL; else return _cache_elements [i].values; }