bbtk::BlackBox::Deleter Struct Reference

#include <bbtkBlackBox.h>

Inheritance diagram for bbtk::BlackBox::Deleter:

Inheritance graph
[legend]
Collaboration diagram for bbtk::BlackBox::Deleter:

Collaboration graph
[legend]

List of all members.

Public Member Functions

 Deleter ()
void Delete (Object *p)
virtual void operator() (Object *p)
 Objects deleter.

Public Attributes

WeakPointer mPointer


Detailed Description

Black box deleter 1) Calls the user overloadable bbDelete method 2) Releases the box descriptor

Definition at line 398 of file bbtkBlackBox.h.


Constructor & Destructor Documentation

bbtk::BlackBox::Deleter::Deleter (  ) 

Reimplemented from bbtk::Object::Deleter.

Definition at line 56 of file bbtkBlackBox.cxx.

00057   {
00058   }


Member Function Documentation

void bbtk::BlackBox::Deleter::Delete ( Object p  )  [virtual]

Reimplemented from bbtk::Object::Deleter.

Definition at line 62 of file bbtkBlackBox.cxx.

References bbtk::BlackBox::bbDelete(), bbtk::BlackBox::bbGetDescriptor(), bbtkDebugMessage, bbtkInternalError, and bbtk::Object::GetObjectName().

00063   {
00064     BlackBox* b = dynamic_cast<BlackBox*>(p);
00065     if (!b)
00066       {
00067         bbtkInternalError("BlackBox::Deleter::Delete("<<p->GetObjectName()
00068                           <<"["<<p<<"]) : "
00069                           <<"dynamic cast to BlackBox* failed !");
00070       }
00071     std::string name = p->GetObjectName();//b->bbGetNameWithParent();
00072     bbtkDebugMessage("object",2,"##> BlackBox::Deleter(\""<<name<<"\")"<<std::endl);
00073 
00074 
00075     BlackBoxDescriptor::WeakPointer desc = b->bbGetDescriptor();
00076     bbtkDebugMessage("object",2,"##> BlackBox::Deleter(\""<<name<<"\") : deleting black box"<<std::endl);
00077     
00078     b->bbDelete();
00079 
00080     bbtkDebugMessage("object",2,"##> BlackBox::Deleter(\""<<name<<"\") : releasing descriptor ["<<desc.lock()<<"]"<<std::endl);
00081     
00082     if (!desc.expired()) 
00083       {
00084         Package::WeakPointer pack = desc.lock()->GetPackage();
00085         if (!pack.expired()) 
00086           {
00087             Package::ReleaseBlackBoxDescriptor(pack,desc);
00088           }
00089         else 
00090           {
00091             bbtkDebugMessage("object",2,"##> BlackBox::Deleter(\""<<name<<"\") : descriptor package expired (was not held by a package and the box was the last instance)"<<std::endl);
00092           }
00093       }
00094     else
00095       {
00096         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);
00097       }
00098     bbtkDebugMessage("object",2,"<## BlackBox::Deleter(\""<<name<<"\")"<<std::endl);
00099   }

Here is the call graph for this function:

void bbtk::Object::Deleter::operator() ( Object p  )  [virtual, inherited]

Objects deleter.

Definition at line 194 of file bbtkObject.cxx.

References bbtkDebugMessage, bbtk::Object::Deleter::Delete(), bbtk::Object::GetObjectName(), and bbtk::Object::Deleter::mPointer.

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     Object::RemoveFromObjectList(mPointer);
00203     this->Delete(p);
00204     bbtkDebugMessage("object",2,"<## Object::Deleter : \""<<name<<"\" ["
00205                      <<adr<<"] deleted"<<std::endl);
00206   }

Here is the call graph for this function:


Member Data Documentation

WeakPointer bbtk::Object::Deleter::mPointer [inherited]

Definition at line 84 of file bbtkObject.h.

Referenced by bbtk::Object::Deleter::operator()().


The documentation for this struct was generated from the following files:

Generated on Wed Nov 12 11:38:34 2008 for BBTK by  doxygen 1.5.6