From 5b8bbbe0a634de7c2479972cfbff99b3e65915e4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hugo=20M=C3=A5rdbrink?= Date: Sat, 19 Apr 2025 20:12:38 +0200 Subject: [PATCH] Add copy functionality to dynamic array --- include/htd/data_structure/dynamic_array.h | 2 ++ src/data_structure/dynamic_array.c | 8 ++++++++ 2 files changed, 10 insertions(+) diff --git a/include/htd/data_structure/dynamic_array.h b/include/htd/data_structure/dynamic_array.h index 6af9a43..54f5a3c 100644 --- a/include/htd/data_structure/dynamic_array.h +++ b/include/htd/data_structure/dynamic_array.h @@ -17,6 +17,8 @@ void* dynarr_at(DynamicArray* arr, usize idx); void dynarr_set(DynamicArray* arr, usize idx, void* data); +void dynarr_copy(DynamicArray* src, DynamicArray* dst); + void dynarr_push(DynamicArray* arr, void* data); void dynarr_free(DynamicArray* arr); diff --git a/src/data_structure/dynamic_array.c b/src/data_structure/dynamic_array.c index 86df5e9..9e39f14 100644 --- a/src/data_structure/dynamic_array.c +++ b/src/data_structure/dynamic_array.c @@ -22,6 +22,14 @@ void dynarr_set(DynamicArray* arr, usize idx, void* data) { memcpy(&((u8*)arr->data)[arr->data_size * idx], data, arr->data_size); } +void dynarr_copy(DynamicArray* src, DynamicArray* dst) { + dst->data_size = src->data_size; + dst->len = src->len; + dst->capacity = src->capacity; + dst->data = (void*)malloc(dst->capacity * dst->data_size); + memcpy(dst->data, src->data, dst->len * dst->data_size); +} + void* dynarr_last(DynamicArray* arr) { return &((u8*)arr->data)[arr->data_size * (arr->len - 1)]; }