void Magpie::removeEventListener(const char * event_name, CCObject* obj, SEL_MagpieEvent func) { for(MagpieEventList::iterator i = _listeners.begin(), e = _listeners.end(); i != e; /**/ ) { MagpieEventHandler* h = * i; if(h->obj == obj && h->func == func && (strcmp(h->event, event_name) == 0)) { i = _listeners.erase(i); destroyEventHandler( h ); } else { i ++; } } }
Magpie::~Magpie() { while(_listeners.size() > 0) { MagpieEventHandler* h = _listeners.back(); _listeners.pop_back(); destroyEventHandler(h); } while (_callbacks.size() > 0) { MagpieCallbackHandler* h = _callbacks.back(); _callbacks.pop_back(); destroyCallbackHandler(h); } }
/** * remove the given message from the IRCD message hash * @param name the name of the message to remove * @return MOD_ERR_OK on success, althing else on fail. **/ int moduleEventDelHandler(char *name) { EvtMessage *evm; int status; if (!mod_current_module) { return MOD_ERR_UNKNOWN; } evm = findEventHandler(EVENT, name); if (!evm) { return MOD_ERR_NOEXIST; } status = delEventHandler(EVENT, evm, mod_current_module->name); if (debug) { displayEvtMessageFromHash(evm->name); } destroyEventHandler(evm); return status; }
//----------------------------------------------------------------------- void PUObserver::destroyEventHandler (size_t index) { destroyEventHandler(getEventHandler(index)); }