Version: 8.3.0
Main Page
Related Pages
Modules
Namespaces
Data Structures
Files
Examples
File List
SALOME KERNEL User's Guide
SALOME KERNEL Reference Documentation
Running Salome
Modules
Namespaces
Data Structures
Files
File List
bin
idl
src
Container
DSC
LifeCycleCORBA
NamingService
Notification
Utils
Test
OpUtil.hxx
SALOME_Utils.hxx
Utils_CommException.hxx
Utils_CorbaException.hxx
Utils_DESTRUCTEUR_GENERIQUE.hxx
Utils_ExceptHandlers.hxx
Utils_Identity.hxx
Utils_Mutex.hxx
Utils_ORB_INIT.hxx
Utils_SALOME_Exception.hxx
Utils_SINGLETON.hxx
Utils_Timer.hxx
Examples
•
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Groups
Pages
Utils_DESTRUCTEUR_GENERIQUE.hxx
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_DESTRUCTEUR_GENERIQUE.hxx
25
// Author : Antoine YESSAYAN, EDF
26
// Module : SALOME
27
// $Header$
28
//
29
# if !defined( __DESTRUCTEUR_GENERIQUE__H__ )
30
# define __DESTRUCTEUR_GENERIQUE__H__
31
32
#include <SALOMEconfig.h>
33
34
#include "SALOME_Utils.hxx"
35
36
#include <list>
37
#include <cassert>
38
#include <omniORB4/CORBA.h>
39
#include <iostream>
40
//# include "utilities.h"
41
63
class
UTILS_EXPORT
DESTRUCTEUR_GENERIQUE_
64
{
65
public
:
66
static
std::list<DESTRUCTEUR_GENERIQUE_*> *Destructeurs;
67
68
virtual
~DESTRUCTEUR_GENERIQUE_
() {}
69
static
const
int
Ajout(
DESTRUCTEUR_GENERIQUE_
&objet );
70
virtual
void
operator()(
void
)=0 ;
71
};
72
73
96
template
<
class
TYPE>
class
DESTRUCTEUR_DE_
:
public
DESTRUCTEUR_GENERIQUE_
97
{
98
public
:
99
/* Programs the destruction at the end of the process, of the object objet.
100
This method records in _PtrObjet the address of an object to be destroyed
101
at the end of the process
102
*/
103
DESTRUCTEUR_DE_
(TYPE &objet):
104
_PtrObjet( &objet )
105
{
106
assert(
DESTRUCTEUR_GENERIQUE_::Ajout
( *
this
) >= 0) ;
107
}
108
109
/* Performs the destruction of the object.
110
This method really destroys the object pointed by _PtrObjet.
111
It should be called at the end of the process (i.e. at exit).
112
*/
113
virtual
void
operator()
(
void
){
114
typedef
PortableServer::ServantBase TServant;
115
if
(_PtrObjet){
116
if
(dynamic_cast<TServant*>(_PtrObjet)){
117
// std::cerr << "WARNING: automatic destruction for servant is no more used. It's too late in exit. Use explicit call" << std::endl;
118
/*
119
if(TServant* aServant = dynamic_cast<TServant*>(_PtrObjet)){
120
PortableServer::POA_var aPOA = aServant->_default_POA();
121
PortableServer::ObjectId_var anObjectId = aPOA->servant_to_id(aServant);
122
aPOA->deactivate_object(anObjectId.in());
123
aServant->_remove_ref();
124
*/
125
}
else
{
126
//cerr << "DESTRUCTEUR_GENERIQUE_::operator() deleting _PtrObjet" << endl;
127
TYPE* aPtr =
static_cast<
TYPE*
>
(_PtrObjet);
128
delete
aPtr;
129
}
130
_PtrObjet = NULL ;
131
}
132
}
133
134
virtual
~
DESTRUCTEUR_DE_
(){
135
assert(!_PtrObjet) ;
136
}
137
138
private
:
139
TYPE *_PtrObjet ;
140
};
141
142
143
# endif
/* # if !defined( __DESTRUCTEUR_GENERIQUE__H__ ) */
src
Utils
Utils_DESTRUCTEUR_GENERIQUE.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