From ee22b5df5c3633143995255ac908e15d77e246d9 Mon Sep 17 00:00:00 2001 From: Eric-Paul Ickhorn Date: Thu, 23 May 2024 00:56:59 +0200 Subject: [PATCH] feature(arena): Added and documented string-clone function. --- inc-c/ufn/ufn_arena.h | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/inc-c/ufn/ufn_arena.h b/inc-c/ufn/ufn_arena.h index d90a287..909359c 100644 --- a/inc-c/ufn/ufn_arena.h +++ b/inc-c/ufn/ufn_arena.h @@ -56,9 +56,16 @@ void ufn_free_arena(ufn_arena_s *arena); /// @return Pointer to the newly allocated block. void * ufn_arena_alloc(ufn_arena_s *arena, uint32_t size); +/// @brief Clones a string into the arena. +/// @param arena Arena to clone string into. +/// @param string String to clone. +/// @return Copied string. The size is immutable. +char * ufn_arena_clone_string(ufn_arena_s *arena, const char *string); + // END OF API, START OF IMPLEMENTATION. #ifdef UFN_IMPLEMENTATION #include +#include ufn_arena_s * ufn_new_dynamic_arena(uint32_t capacity, uint32_t max_tree_size) { @@ -120,6 +127,13 @@ void * ufn_arena_alloc(ufn_arena_s *arena, uint32_t size) return block; } +char * ufn_arena_clone_string(ufn_arena_s *arena, const char *string) +{ + uint32_t len_string = strlen(string); + char *string_copy = ufn_arena_alloc(arena, len_string + 1); + memcpy(string_copy, string, len_string + 1); + return string_copy; +} #endif // UFN_IMPLEMENTATION