aboutsummaryrefslogtreecommitdiff
path: root/src/dstr/ft_dstrgrow.c
diff options
context:
space:
mode:
authorCharles <sircharlesaze@gmail.com>2020-04-03 15:11:33 +0200
committerCharles <sircharlesaze@gmail.com>2020-04-03 15:11:33 +0200
commitbf263810b0a47a68fae0681e6e6d2229a488c069 (patch)
tree0aa97f9afa6b94f6477fa5345fadb00a5ec9b31c /src/dstr/ft_dstrgrow.c
parentd2feec1f97e9f8f201e56ad33662bb663c328a0a (diff)
downloadlibft-bf263810b0a47a68fae0681e6e6d2229a488c069.tar.gz
libft-bf263810b0a47a68fae0681e6e6d2229a488c069.tar.bz2
libft-bf263810b0a47a68fae0681e6e6d2229a488c069.zip
Added Dynamic string struct (no test, no doc)
Diffstat (limited to 'src/dstr/ft_dstrgrow.c')
-rw-r--r--src/dstr/ft_dstrgrow.c31
1 files changed, 31 insertions, 0 deletions
diff --git a/src/dstr/ft_dstrgrow.c b/src/dstr/ft_dstrgrow.c
new file mode 100644
index 0000000..9ad51ea
--- /dev/null
+++ b/src/dstr/ft_dstrgrow.c
@@ -0,0 +1,31 @@
+/* ************************************************************************** */
+/* */
+/* ::: :::::::: */
+/* ft_dstrgrow.c :+: :+: :+: */
+/* +:+ +:+ +:+ */
+/* By: charles <charles.cabergs@gmail.com> +#+ +:+ +#+ */
+/* +#+#+#+#+#+ +#+ */
+/* Created: 2020/04/03 14:17:09 by charles #+# #+# */
+/* Updated: 2020/04/03 15:09:21 by charles ### ########.fr */
+/* */
+/* ************************************************************************** */
+
+#include "libft_dstr.h"
+
+#define FT_DSTR_GROWTH_FACTOR 1.5
+
+t_ftdstr *ft_dstrgrow(t_ftdstr *dstr, size_t at_least)
+{
+ size_t new_capacity;
+ char *new_str;
+
+ new_capacity = dstr->capacity <= 1 ? 2 : dstr->capacity;
+ while (new_capacity < at_least)
+ new_capacity *= FT_DSTR_GROWTH_FACTOR;
+ if ((new_str = (char*)malloc(sizeof(char) * new_capacity)) == NULL)
+ return (NULL);
+ ft_memcpy(new_str, dstr->str, dstr->capacity);
+ dstr->capacity = new_capacity;
+ dstr->str = new_str;
+ return (dstr);
+}