aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/vec/ft_vecinsert_safe.c20
-rw-r--r--src/vec/ft_veciter_addr.c25
-rw-r--r--src/vec/ft_vecremove.c11
-rw-r--r--src/vec/ft_vectake.c26
-rw-r--r--src/vec/ft_vecunwrap.c22
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);
+}