X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=kernel%2Fsrc%2FbbtkObject.cxx;h=8663ce6c415ddf54d062762114b92d056174cc20;hb=16993e9f411c62e9a73d13c40f3748bdd232ce09;hp=e498187bb662dd44ee0603542aff0a6d25ed03d1;hpb=768afeae7c180d69467cf9f6329af457ce2862e9;p=bbtk.git diff --git a/kernel/src/bbtkObject.cxx b/kernel/src/bbtkObject.cxx index e498187..8663ce6 100644 --- a/kernel/src/bbtkObject.cxx +++ b/kernel/src/bbtkObject.cxx @@ -1,5 +1,44 @@ +/* + # --------------------------------------------------------------------- + # + # Copyright (c) CREATIS (Centre de Recherche en Acquisition et Traitement de l'Image + # pour la SantÈ) + # Authors : Eduardo Davila, Frederic Cervenansky, Claire Mouton + # Previous Authors : Laurent Guigues, Jean-Pierre Roux + # CreaTools website : www.creatis.insa-lyon.fr/site/fr/creatools_accueil + # + # This software is governed by the CeCILL-B license under French law and + # abiding by the rules of distribution of free software. You can use, + # modify and/ or redistribute the software under the terms of the CeCILL-B + # license as circulated by CEA, CNRS and INRIA at the following URL + # http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html + # or in the file LICENSE.txt. + # + # As a counterpart to the access to the source code and rights to copy, + # modify and redistribute granted by the license, users are provided only + # with a limited warranty and the software's author, the holder of the + # economic rights, and the successive licensors have only limited + # liability. + # + # The fact that you are presently reading this means that you have had + # knowledge of the CeCILL-B license and that you accept its terms. + # ------------------------------------------------------------------------ */ + + +/*========================================================================= + Program: bbtk + Module: $RCSfile: bbtkObject.cxx,v $ + Language: C++ + Date: $Date: 2012/11/16 08:49:01 $ + Version: $Revision: 1.12 $ +=========================================================================*/ + + + + #include "bbtkObject.h" #include "bbtkMessageManager.h" +#include "bbtkPackage.h" namespace bbtk { @@ -7,6 +46,7 @@ namespace bbtk //======================================================================= Object::ObjectListType Object::mgObjectList; + Object::ObjectListType Object::mgPackageList; //======================================================================= //======================================================================= @@ -32,6 +72,16 @@ namespace bbtk } //======================================================================= + //======================================================================= + void Object::InsertInPackageList(Pointer p) + { + bbtkDebugMessage("object",9,"##> Object::InsertInPackageList(\"" + <GetObjectName()<<"\" ["< w(p); + mgPackageList.insert(w); + } + //======================================================================= + //======================================================================= void Object::RemoveFromObjectList(WeakPointer p) @@ -97,13 +147,13 @@ namespace bbtk { std::cout<<"* Note : "<1) { std::cout<<"* Note : "<GetObjectName(); +#ifdef BBTK_COMPILE_DEBUG_MESSAGES void* adr = (void*)p; bbtkDebugMessage("object",1,"##> Object::Deleter : deleting \"" <Delete(p); - bbtkDebugMessage("object",2,"<## Object::Deleter : \""<Delete(p); + if (remaining == 0) + { + Object::RemoveFromObjectList(mPointer); + bbtkDebugMessage("object",2,"<## Object::Deleter : \""< Object::ReleasePackages()"<use_count() != 0) + { + bbtkDebugMessage("object",1,"##> Releasing package '"<< + i->lock()->GetThisPointer()->GetName() + <<"'"<lock()); + Package::WeakPointer w(i->lock()->GetThisPointer()); + Package::Release(w); + /* + if (p->GetObjectName().find(name) != std::string::npos ) + { + std::cout << n << "/" << mgObjectList.size() << " "; + PrintObjectInfo(p); + m += p->GetObjectSize(); + n++; + } + */ + } + } + } + //======================================================================= @@ -180,13 +272,37 @@ namespace bbtk //======================================================================= StaticInitTime::~StaticInitTime() { + Object::ReleasePackages(); + if (PrintObjectListInfo) { std::cout << std::endl - << "***************** main ended *******************" + << "************************** main ended *******************" << std::endl << std::endl; Object::PrintObjectListInfo(""); } + if (Object::GetObjectsCount()>0) + { + std::cout << std::endl; + std::cout << "**************************** WARNING *************************" + <