/* Internal function: _al_vector_find_and_delete * * Similar to _al_vector_delete_at(_al_vector_find(vec, ptr_item)) but is * lenient if the item is not found. Returns true if the item was found and * deleted. */ bool _al_vector_find_and_delete(_AL_VECTOR *vec, const void *ptr_item) { int idx = _al_vector_find(vec, ptr_item); if (idx >= 0) { _al_vector_delete_at(vec, idx); return true; } else return false; }
void _al_add_display_validated_callback(ALLEGRO_DISPLAY* display, void (*display_validated)(ALLEGRO_DISPLAY*)) { if (_al_vector_find(&display->display_validated_callbacks, display_validated) >= 0) { return; } else { void (**callback)(ALLEGRO_DISPLAY *) = _al_vector_alloc_back(&display->display_validated_callbacks); *callback = display_validated; } }
/* Internal function: _al_vector_contains * A simple wrapper over _al_vector_find. */ bool _al_vector_contains(const _AL_VECTOR *vec, const void *ptr_item) { return _al_vector_find(vec, ptr_item) >= 0; }