void request_watcher_t::detach(event_t *e) { detach_not_destroy(e) ; // The object should be destroyed if empty if (this->events.empty()) delete this ; // ouch! is it kosher C++ ? I hope so, at least... }
request_watcher_t::~request_watcher_t() { delete w ; for(set<event_t*>::const_iterator it=events.begin(); it!=events.end(); ++it) detach_not_destroy(*it) ; events.clear(); }