Protium
Math and Design Features
 All Classes Namespaces Files Functions Variables Typedefs Enumerator Friends Macros Pages
Protium::Singleton::Singleton< Host, CreationPolicy, DeletionPolicy, ThreadingPolicy, MutexPolicy > Class Template Reference

#include <Singleton.h>

Public Types

typedef Host ObjectType
 Declaration of the host interior to the class. More...
 

Static Public Member Functions

static Host & Instance ()
 Use to get instance. More...
 

Private Types

typedef ThreadingPolicy
< ObjectType *, MutexPolicy >
::VolatileType 
PtrInstanceType
 Declaration of data interior to class. More...
 

Private Member Functions

 Singleton ()
 Declared Private so can not be used. More...
 
 Singleton (const Singleton &)
 Declared Private so can not be used. More...
 
Singletonoperator= (const Singleton &)
 Declared Private so can not be used. More...
 

Static Private Member Functions

static void DestroySingleton ()
 Helper Function to destroy instance (Uses Destruction policy) More...
 
static void MakeInstance ()
 Helper Function to make instance (Uses CreationPolicy) More...
 

Static Private Attributes

static bool fDestroyed = false
 Flag for whether or not the instance has been killed (yet) More...
 
static PtrInstanceType fInstance = 0
 Pointer to the interior data. More...
 

Detailed Description

template<class Host, template< class > class CreationPolicy = CreateNew, template< class > class DeletionPolicy = DeleteNever, template< class, class > class ThreadingPolicy = Protium::Threads::InstanceLocked, class MutexPolicy = Protium::Threads::Mutex>
class Protium::Singleton::Singleton< Host, CreationPolicy, DeletionPolicy, ThreadingPolicy, MutexPolicy >

Holder class for singleton instances.

Parameters
HostA predefined class to be singleton'd
CreationPolicyHow the instance should be created. (see CreationPolicies.h)
DeletionPolicyHow the instance should be deleted. (see DeletionPolicies.h)
ThreadingPolicyDefines the level of locking in the class
MutexPolicyDefined the mutex-ability of the class

Definition at line 27 of file Singleton.h.

Member Typedef Documentation

template<class Host, template< class > class CreationPolicy = CreateNew, template< class > class DeletionPolicy = DeleteNever, template< class, class > class ThreadingPolicy = Protium::Threads::InstanceLocked, class MutexPolicy = Protium::Threads::Mutex>
typedef Host Protium::Singleton::Singleton< Host, CreationPolicy, DeletionPolicy, ThreadingPolicy, MutexPolicy >::ObjectType

Declaration of the host interior to the class.

Definition at line 30 of file Singleton.h.

template<class Host, template< class > class CreationPolicy = CreateNew, template< class > class DeletionPolicy = DeleteNever, template< class, class > class ThreadingPolicy = Protium::Threads::InstanceLocked, class MutexPolicy = Protium::Threads::Mutex>
typedef ThreadingPolicy<ObjectType*,MutexPolicy>::VolatileType Protium::Singleton::Singleton< Host, CreationPolicy, DeletionPolicy, ThreadingPolicy, MutexPolicy >::PtrInstanceType
private

Declaration of data interior to class.

Definition at line 48 of file Singleton.h.

Constructor & Destructor Documentation

template<class Host, template< class > class CreationPolicy = CreateNew, template< class > class DeletionPolicy = DeleteNever, template< class, class > class ThreadingPolicy = Protium::Threads::InstanceLocked, class MutexPolicy = Protium::Threads::Mutex>
Protium::Singleton::Singleton< Host, CreationPolicy, DeletionPolicy, ThreadingPolicy, MutexPolicy >::Singleton ( )
private

Declared Private so can not be used.

template<class Host, template< class > class CreationPolicy = CreateNew, template< class > class DeletionPolicy = DeleteNever, template< class, class > class ThreadingPolicy = Protium::Threads::InstanceLocked, class MutexPolicy = Protium::Threads::Mutex>
Protium::Singleton::Singleton< Host, CreationPolicy, DeletionPolicy, ThreadingPolicy, MutexPolicy >::Singleton ( const Singleton< Host, CreationPolicy, DeletionPolicy, ThreadingPolicy, MutexPolicy > &  )
inlineprivate

Declared Private so can not be used.

Definition at line 43 of file Singleton.h.

Member Function Documentation

template<class Host , template< class > class CreationPolicy, template< class > class DeletionPolicy, template< class, class > class ThreadingPolicy, class MutexPolicy >
void Protium::Singleton::Singleton< Host, CreationPolicy, DeletionPolicy, ThreadingPolicy, MutexPolicy >::DestroySingleton ( )
staticprivate

Helper Function to destroy instance (Uses Destruction policy)

Definition at line 119 of file Singleton.h.

template<class Host , template< class > class CreationPolicy, template< class > class DeletionPolicy, template< class, class > class ThreadingPolicy, class MutexPolicy >
Host & Protium::Singleton::Singleton< Host, CreationPolicy, DeletionPolicy, ThreadingPolicy, MutexPolicy >::Instance ( void  )
inlinestatic

Use to get instance.

Definition at line 83 of file Singleton.h.

template<class Host , template< class > class CreationPolicy, template< class > class DeletionPolicy, template< class, class > class ThreadingPolicy, class MutexPolicy >
void Protium::Singleton::Singleton< Host, CreationPolicy, DeletionPolicy, ThreadingPolicy, MutexPolicy >::MakeInstance ( )
staticprivate

Helper Function to make instance (Uses CreationPolicy)

Definition at line 98 of file Singleton.h.

template<class Host, template< class > class CreationPolicy = CreateNew, template< class > class DeletionPolicy = DeleteNever, template< class, class > class ThreadingPolicy = Protium::Threads::InstanceLocked, class MutexPolicy = Protium::Threads::Mutex>
Singleton& Protium::Singleton::Singleton< Host, CreationPolicy, DeletionPolicy, ThreadingPolicy, MutexPolicy >::operator= ( const Singleton< Host, CreationPolicy, DeletionPolicy, ThreadingPolicy, MutexPolicy > &  )
inlineprivate

Declared Private so can not be used.

Definition at line 45 of file Singleton.h.

Member Data Documentation

template<class Host, template< class > class CreationPolicy = CreateNew, template< class > class DeletionPolicy = DeleteNever, template< class, class > class ThreadingPolicy = Protium::Threads::InstanceLocked, class MutexPolicy = Protium::Threads::Mutex>
bool Protium::Singleton::Singleton< Host, CreationPolicy, DeletionPolicy, ThreadingPolicy, MutexPolicy >::fDestroyed = false
staticprivate

Flag for whether or not the instance has been killed (yet)

Definition at line 52 of file Singleton.h.

template<class Host, template< class > class CreationPolicy = CreateNew, template< class > class DeletionPolicy = DeleteNever, template< class, class > class ThreadingPolicy = Protium::Threads::InstanceLocked, class MutexPolicy = Protium::Threads::Mutex>
Singleton< Host, CreationPolicy, DeletionPolicy, ThreadingPolicy, MutexPolicy >::PtrInstanceType Protium::Singleton::Singleton< Host, CreationPolicy, DeletionPolicy, ThreadingPolicy, MutexPolicy >::fInstance = 0
staticprivate

Pointer to the interior data.

Definition at line 50 of file Singleton.h.