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:
parent
69c31ce7f3
commit
7dc0df52d0
1 changed files with 25 additions and 16 deletions
|
@ -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/
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue