bool SNotifyCenter::RegisterEventMap( const ISlotFunctor &slot ) { for(SPOSITION pos = m_evtHandlerMap.GetHeadPosition();pos;) { ISlotFunctor * pSlot = m_evtHandlerMap.GetNext(pos); if(pSlot->Equal(slot)) return false; } m_evtHandlerMap.AddTail(slot.Clone()); return true; }
bool SNotifyCenter::UnregisterEventMap( const ISlotFunctor &slot ) { for(SPOSITION pos = m_evtHandlerMap.GetHeadPosition();pos;) { SPOSITION posPrev = pos; ISlotFunctor * pSlot = m_evtHandlerMap.GetNext(pos); if(pSlot->Equal(slot)) { m_evtHandlerMap.RemoveAt(posPrev); delete pSlot; return true; } } return false; }