summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMike Buland <eichlan@xagasoft.com>2015-07-14 05:48:37 +0000
committerMike Buland <eichlan@xagasoft.com>2015-07-14 05:48:37 +0000
commitb5e1c2fba2b372aa19e1c857c176a175f30241d8 (patch)
treea598c2fb371d12f53ddbb70611e38011cea7fde0 /src
parent3363ebc70f86c5145a98984943488052f5a29189 (diff)
downloadlibbu++-b5e1c2fba2b372aa19e1c857c176a175f30241d8.tar.gz
libbu++-b5e1c2fba2b372aa19e1c857c176a175f30241d8.tar.bz2
libbu++-b5e1c2fba2b372aa19e1c857c176a175f30241d8.tar.xz
libbu++-b5e1c2fba2b372aa19e1c857c176a175f30241d8.zip
constant cache pointers can now be bound and unbound. It may seem odd, but it's
important, they are references to constant data, weather they should be able to become bound still.
Diffstat (limited to 'src')
-rw-r--r--src/unstable/cachebase.h14
1 files changed, 12 insertions, 2 deletions
diff --git a/src/unstable/cachebase.h b/src/unstable/cachebase.h
index 3db257b..1f78360 100644
--- a/src/unstable/cachebase.h
+++ b/src/unstable/cachebase.h
@@ -121,7 +121,7 @@ namespace Bu
121 void checkRef( CacheBase<keytype, basetype> *pCache, 121 void checkRef( CacheBase<keytype, basetype> *pCache,
122 const keytype &kId, 122 const keytype &kId,
123 CacheEntry<keytype, basetype> * &rpEnt, 123 CacheEntry<keytype, basetype> * &rpEnt,
124 obtype * &rpData ) 124 obtype * &rpData ) const
125 { 125 {
126 if( pCache == NULL ) 126 if( pCache == NULL )
127 throw Bu::ExceptionBase("Invalid cache pointer"); 127 throw Bu::ExceptionBase("Invalid cache pointer");
@@ -143,7 +143,7 @@ namespace Bu
143 template<typename obtype> 143 template<typename obtype>
144 void releaseRef( CacheBase<keytype, basetype> *pCache, 144 void releaseRef( CacheBase<keytype, basetype> *pCache,
145 CacheEntry<keytype, basetype> * &rpEnt, 145 CacheEntry<keytype, basetype> * &rpEnt,
146 obtype * &rpData ) 146 obtype * &rpData ) const
147 { 147 {
148 if( pCache == NULL ) 148 if( pCache == NULL )
149 return; 149 return;
@@ -288,6 +288,16 @@ namespace Bu
288 { 288 {
289 CachePtrInterface<keytype, basetype>::releaseRef( pCache, pEnt, pData ); 289 CachePtrInterface<keytype, basetype>::releaseRef( pCache, pEnt, pData );
290 } 290 }
291
292 void bind() const
293 {
294 CachePtrInterface<keytype, basetype>::checkRef( pCache, kId, pEnt, pData );
295 }
296
297 void unbind() const
298 {
299 CachePtrInterface<keytype, basetype>::releaseRef( pCache, pEnt, pData );
300 }
291 301
292 bool isSet() const 302 bool isSet() const
293 { 303 {