(#1034) Implement dynarray_copy_to

master
rexim 2019-08-26 00:06:35 +07:00
parent 06122f045c
commit 7d2500adc4
2 changed files with 10 additions and 0 deletions

View File

@ -207,3 +207,12 @@ void dynarray_replace_at(Dynarray *dynarray, size_t index, void *element)
element,
dynarray->element_size);
}
void dynarray_copy_to(Dynarray *dynarray, void *dest, size_t index)
{
trace_assert(dynarray);
trace_assert(dest);
trace_assert(index < dynarray->count);
memcpy(dest, dynarray->data + index * dynarray->element_size, dynarray->element_size);
}

View File

@ -12,6 +12,7 @@ size_t dynarray_count(const Dynarray *dynarray);
void *dynarray_data(Dynarray *dynarray);
void *dynarray_pointer_at(Dynarray *dynarray, size_t index);
void dynarray_replace_at(Dynarray *dynarray, size_t index, void *element);
void dynarray_copy_to(Dynarray *dynarray, void *dest, size_t index);
void dynarray_clear(Dynarray *dynarray);
// O(1) amortized
// TODO(#981): dynarray_push should be called dynarray_push_copy