mirror of
https://github.com/spiffcode/hostile-takeover.git
synced 2025-12-16 12:08:36 +00:00
49 lines
892 B
C++
49 lines
892 B
C++
#include "base/deletetracker.h"
|
|
|
|
namespace base {
|
|
|
|
// DeleteRecord methods
|
|
|
|
DeleteRecord::DeleteRecord(DeleteTracker *tracker) {
|
|
tracker_ = tracker;
|
|
pdrNext_ = NULL;
|
|
deleted_ = false;
|
|
tracker_->Register(this);
|
|
}
|
|
|
|
DeleteRecord::~DeleteRecord() {
|
|
if (!deleted_) {
|
|
tracker_->Unregister(this);
|
|
}
|
|
}
|
|
|
|
// DeleteTracker methods
|
|
|
|
DeleteTracker::DeleteTracker() {
|
|
pdrFirst_ = NULL;
|
|
}
|
|
|
|
DeleteTracker::~DeleteTracker() {
|
|
for (DeleteRecord *pdr = pdrFirst_; pdr != NULL; pdr = pdr->pdrNext_) {
|
|
pdr->deleted_ = true;
|
|
}
|
|
}
|
|
|
|
void DeleteTracker::Register(DeleteRecord *pdr) {
|
|
pdr->pdrNext_ = pdrFirst_;
|
|
pdrFirst_ = pdr;
|
|
}
|
|
|
|
void DeleteTracker::Unregister(DeleteRecord *pdr) {
|
|
#ifdef LOGGING
|
|
if (pdr != pdrFirst_) {
|
|
LOG() << "Error!";
|
|
}
|
|
#endif
|
|
if (pdr == pdrFirst_) {
|
|
pdrFirst_ = pdr->pdrNext_;
|
|
}
|
|
}
|
|
|
|
} // namespace base
|