te::common::Singleton< T > Class Template Reference

Template support for singleton pattern. More...

#include <Singleton.h>

Inheritance diagram for te::common::Singleton< T >:
te::common::SystemApplicationSettings te::edit::Renderer te::fe::serialize::Expression te::map::ChartRendererManager te::map::serialize::Layer te::se::serialize::Symbolizer

Static Public Member Functions

static T & getInstance ()
 It returns a reference to the singleton instance. More...
 

Protected Member Functions

 Singleton ()
 The singleton constructor is protected. More...
 
virtual ~Singleton ()
 This will avoid clients trying to release pointers to base class. More...
 

Private Member Functions

Singletonoperator= (const Singleton &other)
 
 Singleton (const Singleton &other)
 

Detailed Description

template<class T>
class te::common::Singleton< T >

Template support for singleton pattern.

In TerraLib, classes that manage resources like DataSourceManager and ProjectManager are singletons. The basic interface of a singleton is defined by this singleton class. If you want to get access to the singleton instance you can write a code like:

DataSourceManager& dsm = DataSourceManager::getInstance();

or

std::vector<DataSource*> datasources = DataSourceManager::getInstance().getDataSourceList();

If you want to use this template class in order to create your singleton class, the type T must satisfy the following requirements:

  • It must have an empty constructor;

You can create a singleton class as follow:

class MySingletonClass : public te::common::Singleton<MySingletonClass>
{
friend class te::common::Singleton<MySingletonClass>;
public:
// Singleton methods (just as an example).
int getId()
{
return id;
}
...
protected:
// Empty constructor
MySingletonClass()
{
...
}
private:
// My private data
int id;
...
};

Definition at line 100 of file Singleton.h.

Constructor & Destructor Documentation

◆ Singleton() [1/2]

template<class T >
te::common::Singleton< T >::Singleton ( )
inlineprotected

The singleton constructor is protected.

Definition at line 133 of file Singleton.h.

◆ ~Singleton()

template<class T >
te::common::Singleton< T >::~Singleton ( )
inlineprotectedvirtual

This will avoid clients trying to release pointers to base class.

Definition at line 137 of file Singleton.h.

◆ Singleton() [2/2]

template<class T>
te::common::Singleton< T >::Singleton ( const Singleton< T > &  other)
private

Member Function Documentation

◆ getInstance()

template<class T >
T & te::common::Singleton< T >::getInstance ( )
inlinestatic

It returns a reference to the singleton instance.

Returns
A reference to the singleton instance.

Definition at line 126 of file Singleton.h.

◆ operator=()

template<class T>
Singleton& te::common::Singleton< T >::operator= ( const Singleton< T > &  other)
private

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