cgma
TDUPtr.cpp
Go to the documentation of this file.
00001 #include "ToolDataUser.hpp"
00002 #include "TDUPtr.hpp"
00003 
00004 
00005 void TDPtr::remove_from_TD( TDUPtrListNode* ptr, ToolDataUser* tdu )
00006 {
00007   if ( !tdu )
00008     return;
00009   
00010   TDPtr* td = (TDPtr*)(tdu->get_TD(&is_ptr));
00011   assert(td != NULL);
00012   
00013   if (ptr == td->listHead) {
00014     td->listHead = ptr->nextInTD;
00015     if (!td->listHead ) {
00016       delete tdu->remove_TD(&is_ptr);
00017     }
00018   }
00019   else {
00020     TDUPtrListNode* prev = td->listHead;
00021     while (prev->nextInTD != ptr) {
00022       prev = prev->nextInTD;
00023       assert(prev != NULL);
00024     }
00025     prev->nextInTD = ptr->nextInTD;
00026   }
00027   
00028   ptr->nextInTD = 0;
00029 }
00030 
00031 void TDPtr::add_to_TD( TDUPtrListNode* ptr, ToolDataUser* tdu )
00032 {
00033   if( !tdu )
00034     return;
00035   
00036   TDPtr* td = (TDPtr*)(tdu->get_TD(&is_ptr));
00037   if( ! td ) {
00038     tdu->add_TD(td = new TDPtr);
00039   }
00040   
00041   assert(ptr && !ptr->nextInTD);
00042   ptr->nextInTD = td->listHead;
00043   td->listHead = ptr;
00044 }
00045 
00046 TDPtr::~TDPtr()
00047 {
00048   while (listHead) {
00049     TDUPtrListNode* dead = listHead;
00050     listHead = dead->nextInTD;
00051     dead->nextInTD = 0;
00052     dead->nullify();
00053   }
00054 }
00055 
00056 
00057     
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines