FreeNOS
Singleton.h
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2015 Niek Linnenbank
3  *
4  * This program 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 3 of the License, or
7  * (at your option) any later version.
8  *
9  * This program 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 this program. If not, see <http://www.gnu.org/licenses/>.
16  */
17 
18 #ifndef __LIB_LIBSTD_SINGLETON_H
19 #define __LIB_LIBSTD_SINGLETON_H
20 
39 template <class T> class StrictSingleton
40 {
41  public:
42 
53  static inline T * instance()
54  {
55  static T obj;
56  return &obj;
57  }
58 };
59 
69 template <class T> class WeakSingleton
70 {
71  public:
72 
79  {
80  m_instance = obj;
81  }
82 
86  static inline T * instance()
87  {
88  return m_instance;
89  }
90 
91  private:
92 
94  static T *m_instance;
95 };
96 
97 /* Initialize the static member obj. */
98 template <class T> T* WeakSingleton<T>::m_instance = 0;
99 
105 #endif /* __LIB_LIBSTD_SINGLETON_H */
WeakSingleton::m_instance
static T * m_instance
One and only instance.
Definition: Singleton.h:94
StrictSingleton::instance
static T * instance()
Retrieve the instance.
Definition: Singleton.h:53
StrictSingleton
Singleton design pattern: only one instance is allowed.
Definition: Singleton.h:39
WeakSingleton::instance
static T * instance()
Retrieve the instance.
Definition: Singleton.h:86
WeakSingleton
Singleton design pattern: only one instance is allowed.
Definition: Singleton.h:69