From dfcbb9904402efc8f0deec2a16bd905b911da0aa Mon Sep 17 00:00:00 2001 From: Thomas Grill Date: Tue, 8 Mar 2005 04:57:17 +0000 Subject: updated flext lock-free containers install flcontainers.h Lifos and Fifos with reservoir forgot about void... svn path=/trunk/; revision=2601 --- externals/grill/flext/source/flcontainers.h | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) (limited to 'externals/grill/flext/source/flcontainers.h') diff --git a/externals/grill/flext/source/flcontainers.h b/externals/grill/flext/source/flcontainers.h index ad32055a..a97df172 100644 --- a/externals/grill/flext/source/flcontainers.h +++ b/externals/grill/flext/source/flcontainers.h @@ -270,13 +270,14 @@ public: inline T *Pop() { return static_cast(Lifo::Pop()); } }; -template +template class PooledLifo : public TypedLifo { public: inline T *New() { T *n = reuse.Pop(); return n?n:new T; } - inline Free(T *p) { if(reuse.Size() < Size()) reuse.Push(p); else delete p; } + inline size_t Size() const { return TypedLifo::Size(); } + inline void Free(T *p) { if(reuse.Size() < Size()*M+O) reuse.Push(p); else delete p; } private: TypedLifo reuse; }; @@ -347,13 +348,14 @@ public: inline T *Clear() { return static_cast(Fifo::Clear()); } }; -template +template class PooledFifo : public TypedFifo { public: inline T *New() { T *n = reuse.Pop(); return n?n:new T; } - inline Free(T *p) { if(reuse.Size() < Size()) reuse.Push(p); else delete p; } + inline size_t Size() const { return TypedFifo::Size(); } + inline void Free(T *p) { if(reuse.Size() < Size()*M+O) reuse.Push(p); else delete p; } private: TypedLifo reuse; }; -- cgit v1.2.1