wmem_array_t * wmem_array_new(wmem_allocator_t *allocator, const gsize elem_size) { wmem_array_t *array; array = wmem_array_sized_new(allocator, elem_size, 1); return array; }
static void wmem_test_array(void) { wmem_allocator_t *allocator; wmem_array_t *array; unsigned int i, j, k; guint32 val, *buf; guint32 vals[8]; allocator = wmem_allocator_new(WMEM_ALLOCATOR_STRICT); array = wmem_array_new(allocator, sizeof(guint32)); g_assert(array); g_assert(wmem_array_get_count(array) == 0); for (i=0; i<CONTAINER_ITERS; i++) { val = i; wmem_array_append_one(array, val); g_assert(wmem_array_get_count(array) == i+1); val = *(guint32*)wmem_array_index(array, i); g_assert(val == i); } wmem_strict_check_canaries(allocator); for (i=0; i<CONTAINER_ITERS; i++) { val = *(guint32*)wmem_array_index(array, i); g_assert(val == i); } array = wmem_array_sized_new(allocator, sizeof(guint32), 73); for (i=0; i<CONTAINER_ITERS; i++) { for (j=0; j<8; j++) { vals[j] = i+j; } wmem_array_append(array, vals, 8); g_assert(wmem_array_get_count(array) == 8*(i+1)); } wmem_strict_check_canaries(allocator); buf = (guint32*)wmem_array_get_raw(array); for (i=0; i<CONTAINER_ITERS; i++) { for (j=0; j<8; j++) { g_assert(buf[i*8 + j] == i+j); } } wmem_array_sort(array, wmem_test_compare_guint32); for (i=0, k=0; i<8; i++) { for (j=0; j<=i; j++, k++) { val = *(guint32*)wmem_array_index(array, k); g_assert(val == i); } } for (j=k; k<8*(CONTAINER_ITERS+1)-j; k++) { val = *(guint32*)wmem_array_index(array, k); g_assert(val == ((k-j)/8)+8); } for (i=0; i<7; i++) { for (j=0; j<7-i; j++, k++) { val = *(guint32*)wmem_array_index(array, k); g_assert(val == CONTAINER_ITERS+i); } } g_assert(k == wmem_array_get_count(array)); wmem_destroy_allocator(allocator); }