Version: 8.3.0
Main Page
Related Pages
Packages
Data Structures
Files
File List
Globals
SALOME KERNEL Developer
Deprecated List
Packages
Data Structures
Files
File List
idl
src
Basics
Communication
Container
DF
DSC
GenericObj
HDFPersist
KernelHelpers
Launcher
LifeCycleCORBA
Logger
ModuleCatalog
ModuleGenerator
MPIContainer
NamingService
Notification
NOTIFICATION_SWIG
ParallelContainer
Registry
ResourcesManager
SALOMEDS
SALOMEDSClient
SALOMEDSImpl
SALOMELocalTrace
SALOMESDS
SALOMETraceCollector
TestContainer
TestMPIContainer
TOOLSDS
UnitTests
Utils
Test
duplicate.cxx
OpUtil.cxx
OpUtil.hxx
SALOME_Utils.hxx
Utils_CommException.cxx
Utils_CommException.hxx
Utils_CorbaException.hxx
Utils_DESTRUCTEUR_GENERIQUE.cxx
Utils_DESTRUCTEUR_GENERIQUE.hxx
Utils_ExceptHandlers.cxx
Utils_ExceptHandlers.hxx
Utils_Identity.cxx
Utils_Identity.hxx
Utils_Mutex.cxx
Utils_Mutex.hxx
Utils_ORB_INIT.cxx
Utils_ORB_INIT.hxx
Utils_SALOME_Exception.cxx
Utils_SALOME_Exception.hxx
Utils_SINGLETON.hxx
Utils_Timer.cxx
Utils_Timer.hxx
Globals
Utils_SINGLETON.hxx
Go to the documentation of this file.
1
// Copyright (C) 2007-2016 CEA/DEN, EDF R&D, OPEN CASCADE
2
//
3
// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
4
// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
5
//
6
// This library is free software; you can redistribute it and/or
7
// modify it under the terms of the GNU Lesser General Public
8
// License as published by the Free Software Foundation; either
9
// version 2.1 of the License, or (at your option) any later version.
10
//
11
// This library is distributed in the hope that it will be useful,
12
// but WITHOUT ANY WARRANTY; without even the implied warranty of
13
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14
// Lesser General Public License for more details.
15
//
16
// You should have received a copy of the GNU Lesser General Public
17
// License along with this library; if not, write to the Free Software
18
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
19
//
20
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
21
//
22
23
// SALOME Utils : general SALOME's definitions and tools
24
// File : Utils_SINGLETON.hxx
25
// Author : Antoine YESSAYAN, EDF
26
// Module : SALOME
27
// $Header$
28
//
29
# if !defined( __SINGLETON__H__ )
30
# define __SINGLETON__H__
31
32
#include "
SALOME_Utils.hxx
"
33
34
# include "
Utils_DESTRUCTEUR_GENERIQUE.hxx
"
35
# include <list>
36
73
template
<
class
TYPE>
class
SINGLETON_
74
{
75
76
public
:
77
78
static
TYPE *
Instance
(
void
);
79
static
bool
IsAlreadyExisting
(
void
);
80
static
int
Destruction
(
void
);
81
82
private
:
83
84
TYPE
_Instance
;
85
static
SINGLETON_
*
PtrSingleton
;
86
87
SINGLETON_
(
void
);
88
~SINGLETON_
();
89
90
} ;
/* class SINGLETON_<TYPE> */
91
92
93
94
95
template
<
class
TYPE>
SINGLETON_<TYPE>
*
SINGLETON_<TYPE>::PtrSingleton
=NULL ;
96
97
98
108
template
<
class
TYPE> TYPE *
SINGLETON_<TYPE>::Instance
(
void
)
109
{
110
if
( ! PtrSingleton )
111
{
112
//MESSAGE("SINGLETON_<TYPE>::Instance( void )") ;
113
PtrSingleton =
new
SINGLETON_<TYPE>
;
114
new
DESTRUCTEUR_DE_<TYPE>
( PtrSingleton->_Instance ) ;
115
}
116
return
&PtrSingleton->_Instance ;
117
}
118
119
120
template
<
class
TYPE>
bool
SINGLETON_<TYPE>::IsAlreadyExisting
(
void
)
121
{
122
return
PtrSingleton ?
true
: false ;
123
}
124
125
126
127
128
template
<
class
TYPE>
SINGLETON_<TYPE>::SINGLETON_
(
void
)
129
{
130
//MESSAGE("CREATION d'un SINGLETON_") ;
131
}
132
133
134
135
142
template
<
class
TYPE>
int
SINGLETON_<TYPE>::Destruction
(
void
)
143
{
144
int
k = - 1 ;
145
//BEGIN_OF("SINGLETON_<TYPE>::Destruction( void )") ;
146
if
( PtrSingleton )
147
{
148
//MESSAGE("Destruction du SINGLETON_") ;
149
150
151
std::list<DESTRUCTEUR_GENERIQUE_ *>::iterator k ;
152
for
( k=
DESTRUCTEUR_GENERIQUE_::Destructeurs
->begin() ; k!=
DESTRUCTEUR_GENERIQUE_::Destructeurs
->end();k++)
153
{
154
if
( *k == PtrSingleton->_Instance )
155
{
156
DESTRUCTEUR_GENERIQUE_::Destructeurs
->erase( k ) ;
157
break ;
158
}
159
}
160
delete
PtrSingleton ;
161
PtrSingleton = NULL ;
162
}
163
//END_OF("SINGLETON_<TYPE>::Destruction( void )") ;
164
return
k ;
165
}
166
167
168
template
<
class
TYPE>
SINGLETON_<TYPE>::~SINGLETON_
()
169
{
170
//MESSAGE("passage dans SINGLETON_<TYPE>::~SINGLETON_( void )") ;
171
}
172
173
# endif
/* # if !defined( __SINGLETON__H__ ) */
src
Utils
Utils_SINGLETON.hxx
Copyright © 2007-2017 CEA/DEN, EDF R&D, OPEN CASCADE
Copyright © 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS