smgl 0.11.0
Structured Metadata Engine and Graph Objects Library
Loading...
Searching...
No Matches
Public Types | Public Member Functions | Static Public Member Functions | Static Private Member Functions | Static Private Attributes | List of all members
smgl::detail::SingletonHolder< T, CreationPolicy, LifetimePolicy, ThreadingModel > Class Template Reference

Class for constructing and managing the lifetime of a singleton object. More...

#include <smgl/Singleton.hpp>

Public Types

using InstanceType = typename ThreadingModel< T >::VolatileType
 

Public Member Functions

 SingletonHolder ()=delete
 

Static Public Member Functions

static T & Instance ()
 Access the singleton instance.
 

Static Private Member Functions

static void DestroySingleton ()
 

Static Private Attributes

static InstanceTypeinstance_ = nullptr
 
static bool destroyed_ = false
 

Detailed Description

template<class T, template< class > class CreationPolicy = policy::CreateStatic, template< class > class LifetimePolicy = policy::DefaultLifetime, template< class > class ThreadingModel = policy::SingleThreaded>
class smgl::detail::SingletonHolder< T, CreationPolicy, LifetimePolicy, ThreadingModel >

Class for constructing and managing the lifetime of a singleton object.

This class provides singleton management functionality to a provided template type. The lifetime management behaviors of the singleton are managed by the provided template policies: CreationPolicy manages allocation and deallocation of the object, LifetimePolicy manages when the Singleton is destroyed, and ThreadingModel manages any locking mechanics for multithreaded applications. This class only supports class-level singletons.

Derived from "Modern C++ Design" by Andrei Alexandrescu and the Loki library.

Definition at line 124 of file Singleton.hpp.

Member Typedef Documentation

◆ InstanceType

template<class T , template< class > class CreationPolicy = policy::CreateStatic, template< class > class LifetimePolicy = policy::DefaultLifetime, template< class > class ThreadingModel = policy::SingleThreaded>
using smgl::detail::SingletonHolder< T, CreationPolicy, LifetimePolicy, ThreadingModel >::InstanceType = typename ThreadingModel<T>::VolatileType

Underlying type of the singleton object. Often, but not always, T. For multi-threaded ThreadingModels, could be volatile T.

Definition at line 131 of file Singleton.hpp.

Constructor & Destructor Documentation

◆ SingletonHolder()

template<class T , template< class > class CreationPolicy = policy::CreateStatic, template< class > class LifetimePolicy = policy::DefaultLifetime, template< class > class ThreadingModel = policy::SingleThreaded>
smgl::detail::SingletonHolder< T, CreationPolicy, LifetimePolicy, ThreadingModel >::SingletonHolder ( )
delete

Instance cannot be constructed

Member Function Documentation

◆ DestroySingleton()

template<class T , template< class > class C, template< class > class L, template< class > class M>
void smgl::detail::SingletonHolder< T, C, L, M >::DestroySingleton ( )
staticprivate

Destroys the wrapped singleton object

Definition at line 68 of file SingletonImpl.hpp.

◆ Instance()

template<class T , template< class > class C, template< class > class L, template< class > class M>
T & smgl::detail::SingletonHolder< T, C, L, M >::Instance ( )
static

Access the singleton instance.

Definition at line 38 of file SingletonImpl.hpp.

Member Data Documentation

◆ destroyed_

template<class T , template< class > class C, template< class > class L, template< class > class M>
bool smgl::detail::SingletonHolder< T, C, L, M >::destroyed_ = false
staticprivate

Whether the Singleton has been destroyed

Definition at line 145 of file Singleton.hpp.

◆ instance_

template<class T , template< class > class C, template< class > class L, template< class > class M>
SingletonHolder< T, C, L, M >::InstanceType * smgl::detail::SingletonHolder< T, C, L, M >::instance_ = nullptr
staticprivate

Pointer to the Singleton instance

Definition at line 143 of file Singleton.hpp.


The documentation for this class was generated from the following files: