Pyrogenesis
13997
Main Page
Related Pages
Namespaces
Classes
Files
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Pages
source
ps
Singleton.h
Go to the documentation of this file.
1
/* Copyright (C) 2009 Wildfire Games.
2
* This file is part of 0 A.D.
3
*
4
* 0 A.D. is free software: you can redistribute it and/or modify
5
* it under the terms of the GNU General Public License as published by
6
* the Free Software Foundation, either version 2 of the License, or
7
* (at your option) any later version.
8
*
9
* 0 A.D. is distributed in the hope that it will be useful,
10
* but WITHOUT ANY WARRANTY; without even the implied warranty of
11
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12
* GNU General Public License for more details.
13
*
14
* You should have received a copy of the GNU General Public License
15
* along with 0 A.D. If not, see <http://www.gnu.org/licenses/>.
16
*/
17
18
/*
19
* template base class for Singletons
20
*/
21
22
/*
23
USAGE: class myClass : Singleton<myClass>{};
24
25
Modified from http://gamedev.net/reference/articles/article1954.asp
26
*/
27
28
#ifndef INCLUDED_SINGLETON
29
#define INCLUDED_SINGLETON
30
31
#include "
lib/debug.h
"
32
33
template
<
typename
T>
34
class
Singleton
35
{
36
static
T
*
ms_singleton
;
37
38
public
:
39
Singleton
()
40
{
41
ENSURE
( !
ms_singleton
);
42
ms_singleton
=
static_cast<
T
*
>
(
this
);
43
}
44
45
~Singleton
()
46
{
47
ENSURE
(
ms_singleton
);
48
ms_singleton
= 0;
49
}
50
51
static
T
&
GetSingleton
()
52
{
53
ENSURE
(
ms_singleton
);
54
return
*
ms_singleton
;
55
}
56
57
static
T
*
GetSingletonPtr
()
58
{
59
ENSURE
(
ms_singleton
);
60
return
ms_singleton
;
61
}
62
63
static
bool
IsInitialised
()
64
{
65
return
(
ms_singleton
!= 0);
66
}
67
};
68
69
template
<
typename
T>
70
T
*
Singleton<T>::ms_singleton
= 0;
71
72
#endif
Singleton::GetSingletonPtr
static T * GetSingletonPtr()
Definition:
Singleton.h:57
Singleton::~Singleton
~Singleton()
Definition:
Singleton.h:45
debug.h
Singleton::Singleton
Singleton()
Definition:
Singleton.h:39
Singleton::ms_singleton
static T * ms_singleton
Definition:
Singleton.h:36
ENSURE
#define ENSURE(expr)
ensure the expression <expr> evaluates to non-zero.
Definition:
debug.h:282
Singleton::GetSingleton
static T & GetSingleton()
Definition:
Singleton.h:51
Singleton::IsInitialised
static bool IsInitialised()
Definition:
Singleton.h:63
T
#define T(string_literal)
Definition:
secure_crt.cpp:70
Singleton
Definition:
Singleton.h:34
Generated on Mon Oct 14 2013 00:58:08 for Pyrogenesis by
1.8.5