DECLARE_EXPORT Calendar::~Calendar() { // De-allocate all the dynamic memory used for the bucket objects while (firstBucket) { CalendarBucket* tmp = firstBucket; firstBucket = firstBucket->nextBucket; delete tmp; } // Remove all references from locations for (Location::iterator l = Location::begin(); l != Location::end(); ++l) { if (l->getAvailable() == this) l->setAvailable(NULL); } // Remove reference from buffers for (Buffer::iterator b = Buffer::begin(); b != Buffer::end(); ++b) { if (b->getMaximumCalendar() == this) b->setMaximumCalendar(NULL); if (b->getMinimumCalendar() == this) b->setMinimumCalendar(NULL); } // Remove references from resources for (Resource::iterator r = Resource::begin(); r != Resource::end(); ++r) { if (r->getMaximumCalendar() == this) r->setMaximumCalendar(NULL); } }