#include <bbtkBlackBox.h>
Public Member Functions | |
Deleter () | |
int | Delete (Object *p) |
virtual void | operator() (Object *p) |
Objects deleter. | |
Public Attributes | |
WeakPointer | mPointer |
Definition at line 599 of file bbtkBlackBox.h.
bbtk::BlackBox::Deleter::Deleter | ( | ) |
int bbtk::BlackBox::Deleter::Delete | ( | Object * | p | ) | [virtual] |
Reimplemented from bbtk::Object::Deleter.
Definition at line 63 of file bbtkBlackBox.cxx.
References bbtk::BlackBox::bbDelete(), bbtk::BlackBox::bbGetDescriptor(), bbtkDebugMessage, bbtkInternalError, bbtk::Object::GetObjectName(), and bbtk::Package::ReleaseBlackBoxDescriptor().
00064 { 00065 BlackBox* b = dynamic_cast<BlackBox*>(p); 00066 if (!b) 00067 { 00068 bbtkInternalError("BlackBox::Deleter::Delete("<<p->GetObjectName() 00069 <<"["<<p<<"]) : " 00070 <<"dynamic cast to BlackBox* failed !"); 00071 } 00072 std::string name = p->GetObjectName();//b->bbGetNameWithParent(); 00073 bbtkDebugMessage("object",2,"##> BlackBox::Deleter(\""<<name<<"\")"<<std::endl); 00074 00075 00076 BlackBoxDescriptor::WeakPointer desc = b->bbGetDescriptor(); 00077 bbtkDebugMessage("object",2,"##> BlackBox::Deleter(\""<<name<<"\") : deleting black box"<<std::endl); 00078 00079 int refs = b->bbDelete(); 00080 00081 bbtkDebugMessage("object",2,"##> BlackBox::Deleter(\""<<name<<"\") : releasing descriptor"<<std::endl); 00082 00083 if (!desc.expired()) 00084 { 00085 Package::WeakPointer pack = desc.lock()->GetPackage(); 00086 if (!pack.expired()) 00087 { 00088 Package::ReleaseBlackBoxDescriptor(pack,desc); 00089 } 00090 else 00091 { 00092 bbtkDebugMessage("object",2,"##> BlackBox::Deleter(\""<<name<<"\") : descriptor package expired (was not held by a package and the box was the last instance)"<<std::endl); 00093 } 00094 } 00095 else 00096 { 00097 bbtkDebugMessage("object",2,"##> BlackBox::Deleter(\""<<name<<"\") : descriptor expired : nothing to do (was not held by a package or the box is a complex black box prototype)"<<std::endl); 00098 } 00099 bbtkDebugMessage("object",2,"<## BlackBox::Deleter(\""<<name<<"\")"<<std::endl); 00100 return refs; 00101 }
void bbtk::Object::Deleter::operator() | ( | Object * | p | ) | [virtual, inherited] |
Objects deleter.
Definition at line 194 of file bbtkObject.cxx.
References bbtkDebugMessage, bbtkWarning, bbtk::Object::Deleter::Delete(), bbtk::Object::GetObjectName(), bbtk::Object::Deleter::mPointer, and bbtk::Object::RemoveFromObjectList().
00195 { 00196 std::string name = p->GetObjectName(); 00197 #ifdef BBTK_COMPILE_DEBUG_MESSAGES 00198 void* adr = (void*)p; 00199 bbtkDebugMessage("object",1,"##> Object::Deleter : deleting \"" 00200 <<name<<"\" ["<<adr<<"]"<<std::endl); 00201 #endif 00202 int remaining = this->Delete(p); 00203 if (remaining == 0) 00204 { 00205 Object::RemoveFromObjectList(mPointer); 00206 bbtkDebugMessage("object",2,"<## Object::Deleter : \""<<name<<"\" [" 00207 <<adr<<"] deleted"<<std::endl); 00208 } 00209 else 00210 { 00211 bbtkWarning("##### Object::Deleter \""<<name<<"\" failed !!! " 00212 << remaining << " reference(s) still around..." 00213 <<std::endl); 00214 } 00215 }
WeakPointer bbtk::Object::Deleter::mPointer [inherited] |