libft
Loading...
Searching...
No Matches
vec_push.c
Go to the documentation of this file.
1/* ************************************************************************** */
2/* */
3/* ::: :::::::: */
4/* vec_push.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:11:55 by tspoof ### ########.fr */
10/* */
11/* ************************************************************************** */
12
13#include "vec.h"
14
15// Takes in a vector and a pointer to an element
16// to be pushed to the end of the vector.
17int vec_push(t_vec *dst, void *src)
18{
19 if (!dst || !src)
20 return (-1);
21 if (dst->len * dst->elem_size + dst->elem_size > dst->alloc_size)
22 if (!vec_resize(dst, dst->len * 2))
23 return (-1);
24 ft_memcpy(&dst->memory[dst->len * dst->elem_size], src, dst->elem_size);
25 dst->len++;
26 return (1);
27}
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 alloc_size
Definition vec.h:23
size_t len
Definition vec.h:24
unsigned char * memory
Definition vec.h:21
size_t elem_size
Definition vec.h:22
int vec_resize(t_vec *src, size_t target_len)
Resizes vector.
Definition vec_resize.c:17
int vec_push(t_vec *dst, void *src)
Push element to the end of the vector.
Definition vec_push.c:17