void _loop_release(loop_t* p_loop) { if (NULL == p_loop) { return; } /* TODO: release frames from store */ vector_release(p_loop->video_addresses); vector_release(p_loop->depth_addresses); vector_release(p_loop->frame_ids); vector_release(p_loop->cutoffs); free(p_loop); }
void director_release(director_handle_t handle) { /* TODO: some possible troubles with release code in case * a thread is still running. we could hold on to references * of the threads, or have a counter w/ a mutex. */ size_t count = 0; size_t i = 0; loop_t* p_loop = NULL; status_t status = NO_ERROR; if (NULL == handle) { return; } vector_count(handle->loops, &count); for (i = 0; i < count; i++) { status = vector_element_copy(handle->loops, i, (void**)&p_loop); if (NO_ERROR != status) { _loop_release(p_loop); } } frame_store_release(handle->frame_store); vector_release(handle->loops); _loop_release(handle->p_current_loop); pthread_mutex_destroy(&(handle->loops_mutex)); pthread_mutex_destroy(&(handle->frame_store_mutex)); motion_detector_release(handle->motion_detector); free(handle); }
TEST(VectorTest, CreateRelease) { status_t err = NO_ERROR; vector_handle_t vector = NULL; err = vector_create(1, 1, &vector); ASSERT_EQ(err, NO_ERROR); ASSERT_TRUE(vector != NULL); vector_release(vector); }
vector *string_split(string *s, char *delim) { vector *v; char *token; string *copy = string_new(string_data(s)); string *part; v = vector_new(sizeof(string *)); vector_release(v, string_split_release); for (token = strtok(string_data(copy), delim); token; token = strtok(NULL, delim)) { part = string_new(token); vector_push_back(v, &part); } string_free(copy); return v; }
void document_release(Document *document) { hale_assert(document); _buffer_release(&document->buffer); for (memi i = 0; i < document->views_count; ++i) { document_view_release(&document->views[i]); } document->views_count = 0; // TODO: Free sessions. vector_release(&document->blocks); // vector_release(&document->views); // vector_free(&document->blocks); // vector_free(&document->sessions); }
TEST(VectorTest, AccessorsManipulators) { status_t err = NO_ERROR; vector_handle_t vector = NULL; size_t count = 0; size_t capacity = 0; char element = 0; char* p_element = NULL; err = vector_create(1, 1, &vector); ASSERT_EQ(err, NO_ERROR); ASSERT_TRUE(vector != NULL); err = vector_capacity(vector, &capacity); ASSERT_EQ(err, NO_ERROR); ASSERT_EQ(capacity, (size_t)1); err = vector_count(vector, &count); ASSERT_EQ(err, NO_ERROR); ASSERT_EQ(count, (size_t)0); err = vector_append(vector, &element); ASSERT_EQ(err, NO_ERROR); err = vector_count(vector, &count); ASSERT_EQ(err, NO_ERROR); ASSERT_EQ(count, (size_t)1); err = vector_pop(vector); ASSERT_EQ(err, NO_ERROR); err = vector_count(vector, &count); ASSERT_EQ(err, NO_ERROR); ASSERT_EQ(count, (size_t)0); for (element = 0; element < 10; element++) { err = vector_append(vector, &element); ASSERT_EQ(err, NO_ERROR); } err = vector_count(vector, &count); ASSERT_EQ(err, NO_ERROR); ASSERT_EQ(count, (size_t)10); err = vector_capacity(vector, &capacity); ASSERT_EQ(err, NO_ERROR); ASSERT_GT(capacity, (size_t)1); err = vector_element_address(vector, 5, (void**)&p_element); ASSERT_EQ(err, NO_ERROR); ASSERT_TRUE(NULL != p_element); ASSERT_EQ(*p_element, (char)5); err = vector_remove(vector, 5); ASSERT_EQ(err, NO_ERROR); err = vector_element_address(vector, 5, (void**)&p_element); ASSERT_EQ(err, NO_ERROR); ASSERT_TRUE(NULL != p_element); ASSERT_EQ(*p_element, (char)6); err = vector_count(vector, &count); while ((err == NO_ERROR) && (count > 4)) { err = vector_pop(vector); ASSERT_EQ(err, NO_ERROR); err = vector_count(vector, &count); } ASSERT_EQ(err, NO_ERROR); ASSERT_EQ(count, (size_t)4); err = vector_remove(vector, 6); ASSERT_NE(err, NO_ERROR); err = vector_array(vector, (void**)&p_element); ASSERT_EQ(err, NO_ERROR); ASSERT_TRUE(NULL != p_element); element = 0; while (element < 4) { ASSERT_EQ(*p_element, element); p_element++; element++; } err = vector_clear(vector); ASSERT_EQ(err, NO_ERROR); err = vector_count(vector, &count); ASSERT_EQ(err, NO_ERROR); ASSERT_EQ(count, (size_t)0); err = vector_pop(vector); ASSERT_NE(err, NO_ERROR); vector_release(vector); }
void fixed_gap_arena_release(FixedGapArena *arena) { for (memi i = 0; i != vector_count(arena->buffers); ++i) vector_release(&arena->buffers); }