libft
Loading...
Searching...
No Matches
vec_resize.c
Go to the documentation of this file.
1/* ************************************************************************** */
2/* */
3/* ::: :::::::: */
4/* vec_resize.c :+: :+: :+: */
5/* +:+ +:+ +:+ */
6/* By: tspoof <tspoof@student.hive.fi> +#+ +:+ +#+ */
7/* +#+#+#+#+#+ +#+ */
8/* Created: 2022/12/12 22:48:37 by tspoof #+# #+# */
9/* Updated: 2022/12/15 15:12:01 by tspoof ### ########.fr */
10/* */
11/* ************************************************************************** */
12
13#include "vec.h"
14
15// Allocates target_len * elem_size amout of memory and copies memory from the
16// src to that
17int vec_resize(t_vec *src, size_t target_len)
18{
19 t_vec dst;
20
21 if (!src || !target_len)
22 return (-1);
23 vec_new(&dst, target_len, src->elem_size);
24 if (!dst.memory)
25 return (-1);
26 ft_memcpy(dst.memory, src->memory, src->len * src->elem_size);
27 dst.len = src->len;
28 vec_free(src);
29 *src = dst;
30 return (1);
31}
void * ft_memcpy(void *dst, const void *src, size_t n)
Copies memory to destination.
Definition ft_memcpy.c:15
Definition vec.h:20
size_t len
Definition vec.h:24
unsigned char * memory
Definition vec.h:21
size_t elem_size
Definition vec.h:22
int vec_new(t_vec *dst, size_t init_len, size_t elem_size)
Creates a new vector.
Definition vec_new.c:16
void vec_free(t_vec *src)
Frees vectors memory.
Definition vec_free.c:15
int vec_resize(t_vec *src, size_t target_len)
Resizes vector.
Definition vec_resize.c:17