#include "bbtkObject.h"
#include "bbtkMessageManager.h"
+#include "bbtkPackage.h"
namespace bbtk
{
//=======================================================================
Object::ObjectListType Object::mgObjectList;
+ Object::ObjectListType Object::mgPackageList;
//=======================================================================
//=======================================================================
}
//=======================================================================
+ //=======================================================================
+ void Object::InsertInPackageList(Pointer p)
+ {
+ bbtkDebugMessage("object",9,"##> Object::InsertInPackageList(\""
+ <<p->GetObjectName()<<"\" ["<<p<<"])"<<std::endl);
+ boost::weak_ptr<Object> w(p);
+ mgPackageList.insert(w);
+ }
+ //=======================================================================
+
//=======================================================================
void Object::RemoveFromObjectList(WeakPointer p)
+ //=======================================================================
+ void Object::ReleasePackages()
+ {
+ bbtkDebugMessage("object",1,"##> Object::ReleasePackages()"<<std::endl);
+ // Release package pointers
+ ObjectListType::iterator i;
+ for (i = mgPackageList.begin();
+ i!= mgPackageList.end();
+ ++i)
+ {
+ if (i->use_count() != 0)
+ {
+ bbtkDebugMessage("object",1,"##> Releasing package '"<<
+ i->lock()->GetThisPointer<Package>()->GetName()
+ <<"'"<<std::endl);
+ // Object::Pointer p(i->lock());
+ Package::WeakPointer w(i->lock()->GetThisPointer<Package>());
+ Package::Release(w);
+ /*
+ if (p->GetObjectName().find(name) != std::string::npos )
+ {
+ std::cout << n << "/" << mgObjectList.size() << " ";
+ PrintObjectInfo(p);
+ m += p->GetObjectSize();
+ n++;
+ }
+ */
+ }
+ }
+ }
+ //=======================================================================
//=======================================================================
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 ********************"
- <<std::endl;
+ std::cout << "**************************** WARNING *************************"
+ <<std::endl;
std::cout << "**** "<< Object::GetObjectsCount()
<<" bbtk objects still alive after main ended"<<std::endl;
- std::cout << "**** "
- <<"Rerun bbi with -M option or put 'object -S' in bbs file"
- <<std::endl;
- std::cout << "**** "
- <<"to view the object list "
+ if (!PrintObjectListInfo)
+ {
+
+ std::cout << "**** "
+ <<"Rerun bbi with -D option or put 'debug -D' in bbs file"
<<std::endl;
- std::cout << "*********************************************************"
+ std::cout << "**** "
+ <<"to view the objects list "
+ <<std::endl;
+ }
+ std::cout << "**************************************************************"
+ <<std::endl
<<std::endl;
}