Back to index

salome-kernel  6.5.0
Classes | Functions | Variables
Utils_DESTRUCTEUR_GENERIQUE.cxx File Reference
#include <iostream>
#include <list>
#include <stdlib.h>
#include "Utils_DESTRUCTEUR_GENERIQUE.hxx"
#include "LocalTraceBufferPool.hxx"

Go to the source code of this file.

Classes

class  ATEXIT_
 Mecanisme pour faire executer une seule fois DESTRUCTEUR_GENERIQUE_::Nettoyage a la fin du traitement : creation d'un singleton statique de l'objet tres specialise ATEXIT_. More...

Functions

void Nettoyage (void)
 traitement effectue :

  1. execution de tous les objets de type DESTRUCTEUR_DE_ stockes dans la liste Destructeurs (ce qui detruit les singletons correspondant) ;
  2. puis destruction de tous les objets de type DESTRUCTEUR_DE_ stockes dans la liste Destructeurs;
  3. destruction de la liste Destructeurs.

Variables

static bool ATEXIT_Done = false
static ATEXIT_ nettoyage = ATEXIT_( false )

Function Documentation

void Nettoyage ( void  )

traitement effectue :

  1. execution de tous les objets de type DESTRUCTEUR_DE_ stockes dans la liste Destructeurs (ce qui detruit les singletons correspondant) ;
  2. puis destruction de tous les objets de type DESTRUCTEUR_DE_ stockes dans la liste Destructeurs;
  3. destruction de la liste Destructeurs.

Definition at line 116 of file Utils_DESTRUCTEUR_GENERIQUE.cxx.

{
  //cerr << "Nettoyage()" << endl;
  //if(MYDEBUG) BEGIN_OF("Nettoyage( void )") ;
        assert(DESTRUCTEUR_GENERIQUE_::Destructeurs) ;
        //if(MYDEBUG) SCRUTE( DESTRUCTEUR_GENERIQUE_::Destructeurs->size() ) ;
        if( DESTRUCTEUR_GENERIQUE_::Destructeurs->size() )
        {
                std::list<DESTRUCTEUR_GENERIQUE_*>::iterator it = DESTRUCTEUR_GENERIQUE_::Destructeurs->end() ;

                do
                {
                  //if(MYDEBUG) MESSAGE( "DESTRUCTION d'un SINGLETON");
                        it-- ;
                        DESTRUCTEUR_GENERIQUE_* ptr = *it ;
                        //DESTRUCTEUR_GENERIQUE_::Destructeurs->remove( *it ) ;
                        (*ptr)() ;
                        delete ptr ;
                }while( it!=  DESTRUCTEUR_GENERIQUE_::Destructeurs->begin() ) ;

                DESTRUCTEUR_GENERIQUE_::Destructeurs->clear() ;
                //if(MYDEBUG) SCRUTE( DESTRUCTEUR_GENERIQUE_::Destructeurs->size() ) ;
                assert( DESTRUCTEUR_GENERIQUE_::Destructeurs->size()==0 ) ;
                assert( DESTRUCTEUR_GENERIQUE_::Destructeurs->empty() ) ;
        }

        delete DESTRUCTEUR_GENERIQUE_::Destructeurs;
        DESTRUCTEUR_GENERIQUE_::Destructeurs=0;
        //if(MYDEBUG) END_OF("Nettoyage( void )") ;
        return ;
}

Here is the caller graph for this function:


Variable Documentation

bool ATEXIT_Done = false [static]

Definition at line 61 of file Utils_DESTRUCTEUR_GENERIQUE.cxx.

ATEXIT_ nettoyage = ATEXIT_( false ) [static]

Definition at line 105 of file Utils_DESTRUCTEUR_GENERIQUE.cxx.