diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/vec/ft_vecinsert_safe.c | 20 | ||||
| -rw-r--r-- | src/vec/ft_veciter_addr.c | 25 | ||||
| -rw-r--r-- | src/vec/ft_vecremove.c | 11 | ||||
| -rw-r--r-- | src/vec/ft_vectake.c | 26 | ||||
| -rw-r--r-- | src/vec/ft_vecunwrap.c | 22 |
5 files changed, 98 insertions, 6 deletions
diff --git a/src/vec/ft_vecinsert_safe.c b/src/vec/ft_vecinsert_safe.c new file mode 100644 index 0000000..24e8cac --- /dev/null +++ b/src/vec/ft_vecinsert_safe.c @@ -0,0 +1,20 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_vecinsert_safe.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: charles <charles.cabergs@gmail.com> +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2020/06/09 13:41:03 by charles #+# #+# */ +/* Updated: 2020/06/09 13:41:04 by charles ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft_vec.h" + +t_ftvec *ft_vecinsert_safe(t_ftvec *vec, size_t i, void *elem) +{ + if (elem == NULL) + return (NULL); + return (ft_vecinsert(vec, i, elem)); +} diff --git a/src/vec/ft_veciter_addr.c b/src/vec/ft_veciter_addr.c new file mode 100644 index 0000000..09f6926 --- /dev/null +++ b/src/vec/ft_veciter_addr.c @@ -0,0 +1,25 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_veciter_addr.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: charles <charles.cabergs@gmail.com> +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2020/06/09 13:52:38 by charles #+# #+# */ +/* Updated: 2020/06/09 13:53:30 by charles ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft_vec.h" + +void ft_veciter_addr(t_ftvec *vec, void (*f)(void **addr)) +{ + size_t i; + + i = 0; + while (i < vec->size) + { + f(vec->data + i); + i++; + } +} diff --git a/src/vec/ft_vecremove.c b/src/vec/ft_vecremove.c index d24ba29..28ea541 100644 --- a/src/vec/ft_vecremove.c +++ b/src/vec/ft_vecremove.c @@ -6,7 +6,7 @@ /* By: charles <charles.cabergs@gmail.com> +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2020/04/01 22:45:07 by charles #+# #+# */ -/* Updated: 2020/04/01 22:58:21 by charles ### ########.fr */ +/* Updated: 2020/06/09 13:28:26 by charles ### ########.fr */ /* */ /* ************************************************************************** */ @@ -21,11 +21,10 @@ void ft_vecremove(t_ftvec *vec, size_t i, void (*del)(void *elem)) { - if (vec->size == 0 || i > vec->size - 1) + void *tmp; + + if ((tmp = ft_vectake(vec, i)) == NULL) return ; if (del != NULL) - del(vec->data[i]); - ft_memmove(vec->data + i, vec->data + i + 1, - (vec->size - i - 1) * sizeof(void*)); - vec->size--; + del(tmp); } diff --git a/src/vec/ft_vectake.c b/src/vec/ft_vectake.c new file mode 100644 index 0000000..25a9038 --- /dev/null +++ b/src/vec/ft_vectake.c @@ -0,0 +1,26 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_vectake.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: charles <charles.cabergs@gmail.com> +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2020/06/09 13:27:19 by charles #+# #+# */ +/* Updated: 2020/06/09 13:29:02 by charles ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft_vec.h" + +void *ft_vectake(t_ftvec *vec, size_t i) +{ + void *taken; + + if (vec->size == 0 || i > vec->size - 1) + return (NULL); + taken = vec->data[i]; + ft_memmove(vec->data + i, vec->data + i + 1, + (vec->size - i - 1) * sizeof(void*)); + vec->size--; + return (taken); +} diff --git a/src/vec/ft_vecunwrap.c b/src/vec/ft_vecunwrap.c new file mode 100644 index 0000000..c1ab476 --- /dev/null +++ b/src/vec/ft_vecunwrap.c @@ -0,0 +1,22 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_vecunwrap.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: charles <charles.cabergs@gmail.com> +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2020/06/09 13:49:50 by charles #+# #+# */ +/* Updated: 2020/06/09 13:50:33 by charles ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft_vec.h" + +void **ft_vecunwrap(t_ftvec *vec) +{ + void **tmp; + + tmp = vec->data; + free(vec); + return (tmp); +} |
