FIFE
2008.0
Main Page
Related Pages
Namespaces
Classes
Files
Examples
File List
singleton.h
1
/***************************************************************************
2
* Copyright (C) 2005-2008 by the FIFE team *
3
* http://www.fifengine.de *
4
* This file is part of FIFE. *
5
* *
6
* FIFE is free software; you can redistribute it and/or *
7
* modify it under the terms of the GNU Lesser General Public *
8
* License as published by the Free Software Foundation; either *
9
* version 2.1 of the License, or (at your option) any later version. *
10
* *
11
* This library is distributed in the hope that it will be useful, *
12
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
13
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
14
* Lesser General Public License for more details. *
15
* *
16
* You should have received a copy of the GNU Lesser General Public *
17
* License along with this library; if not, write to the *
18
* Free Software Foundation, Inc., *
19
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA *
20
***************************************************************************/
21
22
#ifndef FIFE_SINGLETON_H
23
#define FIFE_SINGLETON_H
24
25
#define SINGLEFRIEND(classname) friend class FIFE::StaticSingleton<classname>; classname(); virtual ~classname();
26
27
// Standard C++ library includes
28
#include <cassert>
29
30
// 3rd party library includes
31
32
// FIFE includes
33
// These includes are split up in two parts, separated by one empty line
34
// First block: files included from the FIFE root src directory
35
// Second block: files included from the same folder
36
#include "fifeclass.h"
37
38
namespace
FIFE
{
39
44
template
<
typename
T>
class
StaticSingleton
{
45
public
:
46
47
static
T* instance() {
48
static
T inst;
49
return
&inst;
50
}
51
52
protected
:
53
54
StaticSingleton
() {
55
}
56
57
virtual
~
StaticSingleton
() {
58
}
59
60
private
:
61
StaticSingleton
(
const
StaticSingleton<T>
&) {}
62
StaticSingleton<T>
& operator=(
const
StaticSingleton<T>
&) {
63
return
this
;
64
}
65
66
};
67
82
template
<
typename
T>
class
DynamicSingleton
{
83
public
:
84
static
T* instance() {
85
assert(m_instance);
86
return
m_instance;
87
}
88
89
DynamicSingleton
() {
90
assert(!m_instance);
91
m_instance =
static_cast<
T*
>
(
this
);
92
}
93
94
virtual
~
DynamicSingleton
() {
95
m_instance = 0;
96
}
97
98
private
:
99
static
T* m_instance;
100
101
DynamicSingleton
(
const
DynamicSingleton<T>
&) {};
102
DynamicSingleton<T&>
operator=(
const
DynamicSingleton<T>
&) {};
103
104
};
105
106
template
<
typename
T> T*
DynamicSingleton<T>::m_instance
= 0;
107
108
}
//FIFE
109
110
#endif
FIFE::DynamicSingleton
Definition:
singleton.h:82
FIFE::StaticSingleton
Definition:
singleton.h:44
FIFE
credit to phoku for his NodeDisplay example which the visitor code is adapted from ( he coded the qua...
Definition:
soundclip.cpp:39
engine
core
util
base
singleton.h
Generated by
1.8.9.1