diff options
author | Mike Buland <eichlan@xagasoft.com> | 2013-03-13 05:03:59 +0000 |
---|---|---|
committer | Mike Buland <eichlan@xagasoft.com> | 2013-03-13 05:03:59 +0000 |
commit | 55f8e2c01fe4513d5e3de55f567c392b4a18ecc2 (patch) | |
tree | 0e515f65ff43fbebe396516e79cb5f6b96759e73 | |
parent | 0ac226c809b6495d5dbc09c2f847638e10aca315 (diff) | |
download | libbu++-55f8e2c01fe4513d5e3de55f567c392b4a18ecc2.tar.gz libbu++-55f8e2c01fe4513d5e3de55f567c392b4a18ecc2.tar.bz2 libbu++-55f8e2c01fe4513d5e3de55f567c392b4a18ecc2.tar.xz libbu++-55f8e2c01fe4513d5e3de55f567c392b4a18ecc2.zip |
Added bind/unbind to the Cache system. Fixed typo in docs of heap.
Diffstat (limited to '')
-rw-r--r-- | src/stable/heap.h | 2 | ||||
-rw-r--r-- | src/tests/cache.cpp | 33 |
2 files changed, 17 insertions, 18 deletions
diff --git a/src/stable/heap.h b/src/stable/heap.h index 2fcd387..d197b91 100644 --- a/src/stable/heap.h +++ b/src/stable/heap.h | |||
@@ -191,7 +191,7 @@ namespace Bu | |||
191 | * objects enqueued must support less-than-comparison. Then every time an | 191 | * objects enqueued must support less-than-comparison. Then every time an |
192 | * item is dequeued it is always the least item in the heap. The heap | 192 | * item is dequeued it is always the least item in the heap. The heap |
193 | * operates using a binary tree for storage, which allows most operations | 193 | * operates using a binary tree for storage, which allows most operations |
194 | * to be very fast. Enqueueing and dequeueing are both O(log(N)) operatoins | 194 | * to be very fast. Enqueueing and dequeueing are both O(log(N)) operations |
195 | * whereas peeking is constant time. | 195 | * whereas peeking is constant time. |
196 | * | 196 | * |
197 | * This heap implementation allows iterating, however please note that any | 197 | * This heap implementation allows iterating, however please note that any |
diff --git a/src/tests/cache.cpp b/src/tests/cache.cpp index 15662af..aa71c39 100644 --- a/src/tests/cache.cpp +++ b/src/tests/cache.cpp | |||
@@ -220,7 +220,7 @@ public: | |||
220 | 220 | ||
221 | virtual ~CachePtr() | 221 | virtual ~CachePtr() |
222 | { | 222 | { |
223 | release(); | 223 | unbind(); |
224 | } | 224 | } |
225 | 225 | ||
226 | const keytype &getKey() const | 226 | const keytype &getKey() const |
@@ -230,31 +230,31 @@ public: | |||
230 | 230 | ||
231 | obtype &operator*() | 231 | obtype &operator*() |
232 | { | 232 | { |
233 | checkRef(); | 233 | bind(); |
234 | return pData; | 234 | return pData; |
235 | } | 235 | } |
236 | 236 | ||
237 | const obtype &operator*() const | 237 | const obtype &operator*() const |
238 | { | 238 | { |
239 | checkRef(); | 239 | bind(); |
240 | return pData; | 240 | return pData; |
241 | } | 241 | } |
242 | 242 | ||
243 | obtype *operator->() | 243 | obtype *operator->() |
244 | { | 244 | { |
245 | checkRef(); | 245 | bind(); |
246 | return pData; | 246 | return pData; |
247 | } | 247 | } |
248 | 248 | ||
249 | const obtype *operator->() const | 249 | const obtype *operator->() const |
250 | { | 250 | { |
251 | checkRef(); | 251 | bind(); |
252 | return pData; | 252 | return pData; |
253 | } | 253 | } |
254 | 254 | ||
255 | MyType operator=( const MyType &rhs ) | 255 | MyType operator=( const MyType &rhs ) |
256 | { | 256 | { |
257 | release(); | 257 | unbind(); |
258 | pCache = rhs.pCache; | 258 | pCache = rhs.pCache; |
259 | kId = rhs.kId; | 259 | kId = rhs.kId; |
260 | pEnt = rhs.pEnt; | 260 | pEnt = rhs.pEnt; |
@@ -275,22 +275,27 @@ public: | |||
275 | return pCache != rhs.pCache || | 275 | return pCache != rhs.pCache || |
276 | kId != rhs.kId; | 276 | kId != rhs.kId; |
277 | } | 277 | } |
278 | |||
279 | void bind() | ||
280 | { | ||
281 | CachePtrInterface<keytype, basetype>::checkRef( pCache, kId, pEnt, pData ); | ||
282 | } | ||
278 | 283 | ||
279 | void release() | 284 | void unbind() |
280 | { | 285 | { |
281 | CachePtrInterface<keytype, basetype>::releaseRef( pCache, pEnt, pData ); | 286 | CachePtrInterface<keytype, basetype>::releaseRef( pCache, pEnt, pData ); |
282 | } | 287 | } |
283 | 288 | ||
284 | void lock() | 289 | void lock() |
285 | { | 290 | { |
286 | checkRef(); | 291 | bind(); |
287 | if( pEnt ) | 292 | if( pEnt ) |
288 | pEnt->lock(); | 293 | pEnt->lock(); |
289 | } | 294 | } |
290 | 295 | ||
291 | void unlock() | 296 | void unlock() |
292 | { | 297 | { |
293 | checkRef(); | 298 | bind(); |
294 | if( pEnt ) | 299 | if( pEnt ) |
295 | pEnt->unlock(); | 300 | pEnt->unlock(); |
296 | } | 301 | } |
@@ -324,12 +329,6 @@ public: | |||
324 | }; | 329 | }; |
325 | 330 | ||
326 | private: | 331 | private: |
327 | void checkRef() | ||
328 | { | ||
329 | CachePtrInterface<keytype, basetype>::checkRef( pCache, kId, pEnt, pData ); | ||
330 | } | ||
331 | |||
332 | private: | ||
333 | CacheBase<keytype, basetype> *pCache; | 332 | CacheBase<keytype, basetype> *pCache; |
334 | mutable keytype kId; | 333 | mutable keytype kId; |
335 | mutable CacheEntry<keytype, basetype> *pEnt; | 334 | mutable CacheEntry<keytype, basetype> *pEnt; |
@@ -658,13 +657,13 @@ int main( int argc, char *argv[] ) | |||
658 | 657 | ||
659 | c._debug(); | 658 | c._debug(); |
660 | 659 | ||
661 | p1.release(); | 660 | p1.unbind(); |
662 | 661 | ||
663 | c._debug(); | 662 | c._debug(); |
664 | 663 | ||
665 | Bu::println("Name: %1").arg( p1->getName() ); | 664 | Bu::println("Name: %1").arg( p1->getName() ); |
666 | 665 | ||
667 | p1.release(); | 666 | p1.unbind(); |
668 | p1.lock(); | 667 | p1.lock(); |
669 | p1.unlock(); | 668 | p1.unlock(); |
670 | 669 | ||