All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
te::common::Singleton< T > Class Template Reference

Template support for singleton pattern. More...

#include <Singleton.h>

Inheritance diagram for te::common::Singleton< T >:
te::color::ColorSchemeCatalogManager te::common::ProgressManager te::common::SystemApplicationSettings te::dt::DataTypeManager te::map::ChartRendererManager te::se::SymbologyManager te::serialize::AbstractOp te::stmem::Module

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...
 
 ~Singleton ()
 This will avoid clients trying to release pointers to base class. More...
 

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

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

The singleton constructor is protected.

Definition at line 127 of file Singleton.h.

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

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

Definition at line 131 of file Singleton.h.

Member Function Documentation


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