coil::Singleton< SingletonClass > Class Template Reference

#include <Singleton.h>

Inheritance diagram for coil::Singleton< SingletonClass >:

coil::Allocator coil::GlobalFactory< AbstractClass, Identifier, Compare, Creator, Destructor >

List of all members.

Public Types

typedef SingletonClass * SingletonClassPtr
typedef ::coil::Mutex Mutex

Static Public Member Functions

static SingletonClass & instance ()

Protected Member Functions

 Singleton ()
 ~Singleton ()

Static Protected Attributes

static coil::Mutex m_mutex
static SingletonClass * m_instance


Detailed Description

template<class SingletonClass>
class coil::Singleton< SingletonClass >

This class template makes any classed into Singleton classes. Usage is as follows.

class A { // }; typedef coil::Singleton<A> A_;

In the any places, A& a(A_:instance()); // a has singular instance of A

Since the constructor of A is still public, however, user can create other instance of A as follows.

A* a = new A();

If you want to prohibit user from creating new instance, please inherit Singleton class (CRTP) and declare it as a friend class in the target class.

class A : public coil::Singleton<A> { public: private: A(){}

friend class coil::Singelton<A>; };

A* a = new A(); // compile error A& a(A::instance()); // This is the only method to get unique instance


Member Typedef Documentation

template<class SingletonClass>
typedef SingletonClass* coil::Singleton< SingletonClass >::SingletonClassPtr

template<class SingletonClass>
typedef ::coil::Mutex coil::Singleton< SingletonClass >::Mutex


Constructor & Destructor Documentation

template<class SingletonClass>
coil::Singleton< SingletonClass >::Singleton (  )  [inline, protected]

template<class SingletonClass>
coil::Singleton< SingletonClass >::~Singleton (  )  [inline, protected]


Member Function Documentation

template<class SingletonClass>
static SingletonClass& coil::Singleton< SingletonClass >::instance (  )  [inline, static]


Member Data Documentation

template<class SingletonClass>
Singleton< SingletonClass >::Mutex coil::Singleton< SingletonClass >::m_mutex [inline, static, protected]

template<class SingletonClass>
Singleton< SingletonClass >::SingletonClassPtr coil::Singleton< SingletonClass >::m_instance [inline, static, protected]


Generated on Thu Jan 28 13:25:35 2010 for OpenRTM by  doxygen 1.5.5