X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=kernel%2Fsrc%2FbbtkObject.cxx;h=52fa18075fa5276dbb27e44d722b3bf09bf7e48c;hb=8dd53a72bc1dd1ca2c6e2763c0aeb51c77ee352e;hp=6f425642effcc28abac6cd2226ddf20045a7cebe;hpb=4ad5b5ee44357ad873bc8c43230defb6d0a79879;p=bbtk.git diff --git a/kernel/src/bbtkObject.cxx b/kernel/src/bbtkObject.cxx index 6f42564..52fa180 100644 --- a/kernel/src/bbtkObject.cxx +++ b/kernel/src/bbtkObject.cxx @@ -1,5 +1,37 @@ +/*========================================================================= + Program: bbtk + Module: $RCSfile: bbtkObject.cxx,v $ + Language: C++ + Date: $Date: 2009/04/30 14:31:31 $ + Version: $Revision: 1.11 $ +=========================================================================*/ + +/* --------------------------------------------------------------------- + +* Copyright (c) CREATIS-LRMN (Centre de Recherche en Imagerie Medicale) +* Authors : Eduardo Davila, Laurent Guigues, Jean-Pierre Roux +* +* 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. +* ------------------------------------------------------------------------ */ + + #include "bbtkObject.h" #include "bbtkMessageManager.h" +#include "bbtkPackage.h" namespace bbtk { @@ -7,6 +39,7 @@ namespace bbtk //======================================================================= Object::ObjectListType Object::mgObjectList; + Object::ObjectListType Object::mgPackageList; //======================================================================= //======================================================================= @@ -32,6 +65,16 @@ namespace bbtk } //======================================================================= + //======================================================================= + void Object::InsertInPackageList(Pointer p) + { + bbtkDebugMessage("object",9,"##> Object::InsertInPackageList(\"" + <GetObjectName()<<"\" ["< w(p); + mgPackageList.insert(w); + } + //======================================================================= + //======================================================================= void Object::RemoveFromObjectList(WeakPointer p) @@ -59,7 +102,7 @@ namespace bbtk //======================================================================= //======================================================================= - void Object::PrintObjectListInfo() + void Object::PrintObjectListInfo(const std::string& name) { std::cout @@ -80,9 +123,13 @@ namespace bbtk else { Object::Pointer p(i->lock()); - PrintObjectInfo(p); - n++; - m += p->GetObjectSize(); + if (p->GetObjectName().find(name) != std::string::npos ) + { + std::cout << n << "/" << mgObjectList.size() << " "; + PrintObjectInfo(p); + m += p->GetObjectSize(); + n++; + } } } std::cout @@ -93,13 +140,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++; + } + */ + } + } + } + //======================================================================= @@ -175,13 +265,37 @@ namespace bbtk //======================================================================= StaticInitTime::~StaticInitTime() { + Object::ReleasePackages(); + if (PrintObjectListInfo) { std::cout << std::endl - << "***************** main ended *******************" + << "************************** main ended *******************" << std::endl << std::endl; - Object::PrintObjectListInfo(); + Object::PrintObjectListInfo(""); } + if (Object::GetObjectsCount()>0) + { + std::cout << std::endl; + std::cout << "**************************** WARNING *************************" + <