supertux
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>
58 
59 #endif
60 
61 /* EOF */
A &#39;Currenton&#39; allows access to the currently active instance of a class via the static current() func...
Definition: currenton.hpp:30