FreeNOS
lib
libstd
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
78
WeakSingleton<T>
(T *obj)
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
Generated by
1.8.17