OpenRTM
1.0.0
メインページ
ネームスペース
クラス
ファイル
ファイル一覧
ファイルメンバ
tmp
buildd
ros-hydro-openrtm-aist-1.1.0-13quantal-20150213-1351
src
lib
coil
include
coil
Singleton.h
説明を見る。
1
// -*- C++ -*-
20
#ifndef COIL_SINGLETON_H
21
#define COIL_SINGLETON_H
22
23
#include <
coil/Mutex.h
>
24
#include <
coil/Guard.h
>
25
26
namespace
coil
27
{
105
template
<
class
SingletonClass>
106
class
Singleton
107
{
108
public
:
109
typedef
SingletonClass*
SingletonClassPtr
;
110
typedef ::coil::Mutex
Mutex
;
111
131
static
SingletonClass&
instance
()
132
{
133
134
// DLC pattern
135
if
(!
m_instance
)
136
{
137
coil::Guard<coil::Mutex>
guard(
m_mutex
);
138
if
(!
m_instance
)
139
{
140
m_instance
=
new
SingletonClass();
141
}
142
}
143
return
*
m_instance
;
144
}
145
146
protected
:
162
Singleton
(){};
163
179
~Singleton
(){};
180
181
private
:
182
Singleton
(
const
Singleton
& x);
183
Singleton
& operator=(
const
Singleton
& x);
184
185
protected
:
193
static
coil::Mutex
m_mutex
;
194
202
static
SingletonClass*
m_instance
;
203
};
204
205
template
<
class
SingletonClass>
206
typename
Singleton<SingletonClass>::SingletonClassPtr
207
Singleton<SingletonClass>::m_instance
;
208
209
template
<
class
SingletonClass>
210
typename
Singleton<SingletonClass>::Mutex
211
Singleton<SingletonClass>::m_mutex
;
212
};
// namepsace coil
213
214
#endif // COIL_SINGLETON_H
OpenRTMに対してFri Feb 13 2015 13:57:28に生成されました。
1.8.1.2