/** Removes from arr all values in minusArr. For each value in minusArr, all matching instances in arr will be removed. @since v0.99.4 */ void ccCArrayFullRemoveArray(ccCArray *arr, ccCArray *minusArr) { unsigned int back = 0; for(unsigned int i = 0; i < arr->num; i++) { if( ccCArrayContainsValue(minusArr, arr->arr[i]) ) { back++; } else { arr->arr[i - back] = arr->arr[i]; } } arr->num -= back; }
void CCTouchDispatcher::addTargetedDelegate(CCTouchDelegate *pDelegate, int nPriority, bool bSwallowsTouches) { CCTouchHandler *pHandler = CCTargetedTouchHandler::handlerWithDelegate(pDelegate, nPriority, bSwallowsTouches); if (! m_bLocked) { forceAddHandler(pHandler, m_pTargetedHandlers); } else { /* If pHandler is contained in m_pHandlersToRemove, if so remove it from m_pHandlersToRemove and retrun. * Refer issue #752(cocos2d-x) */ if (ccCArrayContainsValue(m_pHandlersToRemove, pDelegate)) { ccCArrayRemoveValue(m_pHandlersToRemove, pDelegate); return; } m_pHandlersToAdd->addObject(pHandler); m_bToAdd = true; } }