supertux
src
util
currenton.hpp
1
/*
2
** Windstille - A Sci-Fi Action-Adventure Game
3
** Copyright (C) 2009 Ingo Ruhnke <grumbel@gmail.com>
4
**
5
** This program is free software: you can redistribute it and/or modify
6
** it under the terms of the GNU General Public License as published by
7
** the Free Software Foundation, either version 3 of the License, or
8
** (at your option) any later version.
9
**
10
** This program is distributed in the hope that it will be useful,
11
** but WITHOUT ANY WARRANTY; without even the implied warranty of
12
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
** GNU General Public License for more details.
14
**
15
** You should have received a copy of the GNU General Public License
16
** along with this program. If not, see <http://www.gnu.org/licenses/>.
17
*/
18
19
#ifndef HEADER_SUPERTUX_UTIL_CURRENTON_HPP
20
#define HEADER_SUPERTUX_UTIL_CURRENTON_HPP
21
29
template
<
class
C>
30
class
Currenton
31
{
32
private
:
33
static
Currenton<C>
* s_current;
34
35
protected
:
36
Currenton
()
37
{
38
// FIXME: temporarly disabled, as Sector() for the main menu,
39
// doesn't get cleaned up before a real Sector() starts
40
// assert(!s_current);
41
s_current =
this
;
42
}
43
44
virtual
~
Currenton
()
45
{
46
if
(s_current ==
this
)
47
{
48
s_current =
nullptr
;
49
}
50
}
51
52
public
:
53
static
C* current() {
return
static_cast<
C*
>
(s_current); }
54
};
55
56
template
<
class
C>
57
Currenton<C>
*
Currenton<C>::s_current
=
nullptr
;
58
59
#endif
60
61
/* EOF */
Currenton
A 'Currenton' allows access to the currently active instance of a class via the static current() func...
Definition:
currenton.hpp:30
Generated by
1.8.13