add additional template parameter for the changed threading classes

git-svn-id: svn://svn.code.sf.net/p/loki-lib/code/trunk@512 7ec92016-0320-0410-acc4-a06ded1c099a
This commit is contained in:
syntheticpp 2006-01-22 00:44:17 +00:00
parent 69c31ce7f3
commit 7dc0df52d0

View file

@ -537,8 +537,8 @@ namespace Loki
class SingletonFixedLongevity class SingletonFixedLongevity
{ {
public: public:
virtual ~SingletonFixedLongevity() {} virtual ~SingletonFixedLongevity() {}
static void ScheduleDestruction(T* pObj, atexit_pfn_t pFun) static void ScheduleDestruction(T* pObj, atexit_pfn_t pFun)
{ {
Private::Adapter<T> adapter = { pFun }; Private::Adapter<T> adapter = { pFun };
@ -706,7 +706,8 @@ namespace Loki
typename T, typename T,
template <class> class CreationPolicy = CreateUsingNew, template <class> class CreationPolicy = CreateUsingNew,
template <class> class LifetimePolicy = DefaultLifetime, template <class> class LifetimePolicy = DefaultLifetime,
template <class> class ThreadingModel = LOKI_DEFAULT_THREADING_NO_OBJ_LEVEL template <class, class> class ThreadingModel = LOKI_DEFAULT_THREADING_NO_OBJ_LEVEL,
class MutexPolicy = Mutex
> >
class SingletonHolder class SingletonHolder
{ {
@ -724,7 +725,7 @@ namespace Loki
SingletonHolder(); SingletonHolder();
// Data // Data
typedef typename ThreadingModel<T*>::VolatileType PtrInstanceType; typedef typename ThreadingModel<T*,MutexPolicy>::VolatileType PtrInstanceType;
static PtrInstanceType pInstance_; static PtrInstanceType pInstance_;
static bool destroyed_; static bool destroyed_;
}; };
@ -738,19 +739,21 @@ namespace Loki
class T, class T,
template <class> class C, template <class> class C,
template <class> class L, template <class> class L,
template <class> class M template <class, class> class M,
class X
> >
typename SingletonHolder<T, C, L, M>::PtrInstanceType typename SingletonHolder<T, C, L, M, X>::PtrInstanceType
SingletonHolder<T, C, L, M>::pInstance_; SingletonHolder<T, C, L, M, X>::pInstance_;
template template
< <
class T, class T,
template <class> class C, template <class> class C,
template <class> class L, template <class> class L,
template <class> class M template <class, class> class M,
class X
> >
bool SingletonHolder<T, C, L, M>::destroyed_; bool SingletonHolder<T, C, L, M, X>::destroyed_;
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
// SingletonHolder::Instance // SingletonHolder::Instance
@ -761,10 +764,11 @@ namespace Loki
class T, class T,
template <class> class CreationPolicy, template <class> class CreationPolicy,
template <class> class LifetimePolicy, template <class> class LifetimePolicy,
template <class> class ThreadingModel template <class, class> class ThreadingModel,
class MutexPolicy
> >
inline T& SingletonHolder<T, CreationPolicy, inline T& SingletonHolder<T, CreationPolicy,
LifetimePolicy, ThreadingModel>::Instance() LifetimePolicy, ThreadingModel, MutexPolicy>::Instance()
{ {
if (!pInstance_) if (!pInstance_)
{ {
@ -782,12 +786,13 @@ namespace Loki
class T, class T,
template <class> class CreationPolicy, template <class> class CreationPolicy,
template <class> class LifetimePolicy, template <class> class LifetimePolicy,
template <class> class ThreadingModel template <class, class> class ThreadingModel,
class MutexPolicy
> >
void SingletonHolder<T, CreationPolicy, void SingletonHolder<T, CreationPolicy,
LifetimePolicy, ThreadingModel>::MakeInstance() LifetimePolicy, ThreadingModel, MutexPolicy>::MakeInstance()
{ {
typename ThreadingModel<SingletonHolder>::Lock guard; typename ThreadingModel<SingletonHolder,MutexPolicy>::Lock guard;
(void)guard; (void)guard;
if (!pInstance_) if (!pInstance_)
@ -808,10 +813,11 @@ namespace Loki
class T, class T,
template <class> class CreationPolicy, template <class> class CreationPolicy,
template <class> class L, template <class> class L,
template <class> class M template <class, class> class M,
class X
> >
void LOKI_C_CALLING_CONVENTION_QUALIFIER void LOKI_C_CALLING_CONVENTION_QUALIFIER
SingletonHolder<T, CreationPolicy, L, M>::DestroySingleton() SingletonHolder<T, CreationPolicy, L, M, X>::DestroySingleton()
{ {
assert(!destroyed_); assert(!destroyed_);
CreationPolicy<T>::Destroy(pInstance_); CreationPolicy<T>::Destroy(pInstance_);
@ -835,6 +841,9 @@ namespace Loki
#endif // SINGLETON_INC_ #endif // SINGLETON_INC_
// $Log$ // $Log$
// Revision 1.23 2006/01/22 00:44:17 syntheticpp
// add additional template parameter for the changed threading classes
//
// Revision 1.22 2006/01/19 23:11:55 lfittl // Revision 1.22 2006/01/19 23:11:55 lfittl
// - Disabled -Weffc++ flag, fixing these warnings produces too much useless code // - Disabled -Weffc++ flag, fixing these warnings produces too much useless code
// - Enabled -pedantic, -Wold-style-cast and -Wundef for src/ and test/ // - Enabled -pedantic, -Wold-style-cast and -Wundef for src/ and test/