File: singleton.hh

package info (click to toggle)
performous 0.7.0%2Bgit20140715-2
  • links: PTS, VCS
  • area: main
  • in suites: jessie, jessie-kfreebsd
  • size: 7,900 kB
  • ctags: 3,470
  • sloc: cpp: 16,647; sh: 2,495; ansic: 2,015; python: 431; xml: 407; objc: 245; makefile: 12
file content (16 lines) | stat: -rw-r--r-- 452 bytes parent folder | download | duplicates (7)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#pragma once

/// template for creating singletons
template <class T> class Singleton {
  protected:
	/// pointer to object
	static T* ms_Singleton;

  public:
	Singleton() { ms_Singleton = static_cast<T*>(this); }
	~Singleton() { ms_Singleton = 0; }
	/// gets reference to singleton object
	inline static T& getSingleton() { return *ms_Singleton; }
	/// gets pointer to singleton object
	inline static T* getSingletonPtr() { return ms_Singleton; }
};