diff options
Diffstat (limited to 'src/cache.h')
-rw-r--r-- | src/cache.h | 17 |
1 files changed, 13 insertions, 4 deletions
diff --git a/src/cache.h b/src/cache.h index 987443c..06b798c 100644 --- a/src/cache.h +++ b/src/cache.h | |||
@@ -205,6 +205,12 @@ namespace Bu | |||
205 | virtual ~Cache() | 205 | virtual ~Cache() |
206 | { | 206 | { |
207 | TRACE(); | 207 | TRACE(); |
208 | |||
209 | // Better safe than sorry, better try a sync before anything | ||
210 | // else happens. | ||
211 | sync(); | ||
212 | |||
213 | // Cycle through and unload all objects from the system. | ||
208 | for( typename CidHash::iterator i = hEnt.begin(); | 214 | for( typename CidHash::iterator i = hEnt.begin(); |
209 | i != hEnt.end(); i++ ) | 215 | i != hEnt.end(); i++ ) |
210 | { | 216 | { |
@@ -214,10 +220,6 @@ namespace Bu | |||
214 | // object when the Cache is destroyed. | 220 | // object when the Cache is destroyed. |
215 | throw Bu::ExceptionBase("iRefs not zero."); | 221 | throw Bu::ExceptionBase("iRefs not zero."); |
216 | } | 222 | } |
217 | pCalc->onUnload( | ||
218 | i.getValue().pData, | ||
219 | i.getKey() | ||
220 | ); | ||
221 | pStore->unload( | 223 | pStore->unload( |
222 | i.getValue().pData, | 224 | i.getValue().pData, |
223 | i.getKey() | 225 | i.getKey() |
@@ -230,6 +232,8 @@ namespace Bu | |||
230 | Ptr insert( obtype *pData ) | 232 | Ptr insert( obtype *pData ) |
231 | { | 233 | { |
232 | TRACE( pData ); | 234 | TRACE( pData ); |
235 | if( pStore->has( __cacheGetKey<keytype, obtype>( pData ) ) ) | ||
236 | throw Bu::ExceptionBase("Key already exists in cache."); | ||
233 | CacheEntry e = {pData, 0, 0}; | 237 | CacheEntry e = {pData, 0, 0}; |
234 | keytype k = pStore->create( pData ); | 238 | keytype k = pStore->create( pData ); |
235 | hEnt.insert( k, e ); | 239 | hEnt.insert( k, e ); |
@@ -336,6 +340,11 @@ namespace Bu | |||
336 | return pStore->getKeys(); | 340 | return pStore->getKeys(); |
337 | } | 341 | } |
338 | 342 | ||
343 | KeyList getActiveKeys() | ||
344 | { | ||
345 | return hEnt.getKeys(); | ||
346 | } | ||
347 | |||
339 | int getSize() | 348 | int getSize() |
340 | { | 349 | { |
341 | return pStore->getSize(); | 350 | return pStore->getSize(); |