From ecc3206e11041756d62cf8b95394adda39d7b7e4 Mon Sep 17 00:00:00 2001 From: Jeff Hill Date: Wed, 6 Aug 2003 17:43:18 +0000 Subject: [PATCH] allow freeList template arguments to be specified --- src/ca/autoPtrFreeList.h | 33 +++++++++++++++++---------------- 1 file changed, 17 insertions(+), 16 deletions(-) diff --git a/src/ca/autoPtrFreeList.h b/src/ca/autoPtrFreeList.h index 23d62a5d8..292187a8d 100644 --- a/src/ca/autoPtrFreeList.h +++ b/src/ca/autoPtrFreeList.h @@ -39,10 +39,10 @@ # define epicsExportSharedSymbols #endif -template < class T > +template < class T, unsigned N = 0x400, class MUTEX = epicsMutex > class autoPtrFreeList { public: - autoPtrFreeList ( tsFreeList < T > &, T * ); + autoPtrFreeList ( tsFreeList < T, N, MUTEX > &, T * ); ~autoPtrFreeList (); T & operator * () const; T * operator -> () const; @@ -50,18 +50,19 @@ public: T * release (); private: T * p; - tsFreeList < T > & freeList; + tsFreeList < T, N, MUTEX > & freeList; // not implemented autoPtrFreeList & operator = ( const autoPtrFreeList & ); - autoPtrFreeList ( const autoPtrFreeList & ); + autoPtrFreeList ( const autoPtrFreeList < T, N, MUTEX > & ); }; -template < class T > -inline autoPtrFreeList::autoPtrFreeList ( tsFreeList < T > & freeListIn, T * pIn ) : +template < class T, unsigned N, class MUTEX > +inline autoPtrFreeList < T, N, MUTEX >::autoPtrFreeList ( + tsFreeList < T, N, MUTEX > & freeListIn, T * pIn ) : p ( pIn ), freeList ( freeListIn ) {} -template < class T > -inline autoPtrFreeList::~autoPtrFreeList () +template < class T, unsigned N, class MUTEX > +inline autoPtrFreeList < T, N, MUTEX >::~autoPtrFreeList () { if ( this->p ) { this->p->~T(); @@ -75,26 +76,26 @@ inline autoPtrFreeList::~autoPtrFreeList () } } -template < class T > -inline T & autoPtrFreeList::operator * () const +template < class T, unsigned N, class MUTEX > +inline T & autoPtrFreeList < T, N, MUTEX >::operator * () const { return * this->p; } -template < class T > -inline T * autoPtrFreeList::operator -> () const +template < class T, unsigned N, class MUTEX > +inline T * autoPtrFreeList < T, N, MUTEX >::operator -> () const { return this->p; } -template < class T > -inline T * autoPtrFreeList::get () const +template < class T, unsigned N, class MUTEX > +inline T * autoPtrFreeList < T, N, MUTEX >::get () const { return this->p; } -template < class T > -inline T * autoPtrFreeList::release () +template < class T, unsigned N, class MUTEX > +inline T * autoPtrFreeList < T, N, MUTEX >::release () { T *pTmp = this->p; this->p = 0;