From: Lukáš Jiřiště Date: Sat, 2 Aug 2025 14:26:07 +0000 (+0200) Subject: Switch to using typedef for a function pointer X-Git-Url: https://git.ljiriste.work/?a=commitdiff_plain;h=498cae433c0516f4058b255ee8b9b34c6c888442;p=Libft.git Switch to using typedef for a function pointer --- diff --git a/inc/ft_arr.h b/inc/ft_arr.h index 233e303..bde3328 100644 --- a/inc/ft_arr.h +++ b/inc/ft_arr.h @@ -6,7 +6,7 @@ /* By: ljiriste +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/12/09 13:58:15 by ljiriste #+# #+# */ -/* Updated: 2025/07/31 07:21:49 by ljiriste ### ########.fr */ +/* Updated: 2025/08/02 16:23:54 by ljiriste ### ########.fr */ /* */ /* ************************************************************************** */ @@ -26,6 +26,8 @@ extern "C" { typedef t_ft_stat t_arr_stat; +typedef void (*t_free_fun)(void *); + // It should be possible to remove el_size with the use of macros? typedef struct s_vec { @@ -47,14 +49,14 @@ t_arr_stat ft_vec_enlarge(t_vec *vec); t_arr_stat ft_vec_insert(t_vec *vec, const void *element, size_t index); t_arr_stat ft_vec_append(t_vec *vec, const void *element); t_arr_stat ft_vec_forget(t_vec *vec, size_t index); -t_arr_stat ft_vec_erase(t_vec *vec, size_t index, void (*free_el)(void *)); +t_arr_stat ft_vec_erase(t_vec *vec, size_t index, t_free_fun free_el); t_arr_stat ft_vec_insert_range(t_vec *vec, const void *element, size_t count, size_t index); t_arr_stat ft_vec_append_range(t_vec *vec, const void *element, size_t count); t_arr_stat ft_vec_forget_range(t_vec *vec, size_t index, size_t count); t_arr_stat ft_vec_erase_range(t_vec *vec, size_t count, size_t index, - void (*free_el)(void *)); + t_free_fun free_el); t_arr_stat ft_vec_insert_empty(t_vec *vec, size_t i); t_arr_stat ft_vec_insert_empty_range(t_vec *vec, size_t count, size_t i); @@ -70,7 +72,7 @@ t_arr_stat ft_vec_append_empty_range(t_vec *vec, size_t count); */ t_arr_stat ft_vec_init(t_vec *vec, size_t el_size); -void ft_vec_free(t_vec *vec, void (*free_el)(void *)); +void ft_vec_free(t_vec *vec, t_free_fun free_el); void *ft_vec_access(t_vec *vec, size_t index); const void *ft_vec_caccess(const t_vec *vec, size_t index); @@ -83,7 +85,7 @@ const void *ft_vec_caccess(const t_vec *vec, size_t index); */ t_arr_stat ft_vec_copy(t_vec *dest, const t_vec *src, t_ft_stat (*copy_el)(void *, const void *), - void (*free_el)(void *)); + t_free_fun free_el); void *ft_vec_find(t_vec *vec, void *wanted, int (*cmp_elements)(const void *, const void *)); @@ -108,16 +110,16 @@ t_ft_stat ft_vec_setinsert(t_vec *vec, const void *el, int (*cmp_el)(const void *, const void *)); t_arr_stat ft_mat_init(t_mat *mat, size_t el_size); -void ft_mat_free(t_mat *mat, void (*free_el)(void *)); +void ft_mat_free(t_mat *mat, t_free_fun free_el); t_arr_stat ft_mat_resize(t_mat *mat, size_t rows, size_t cols); t_arr_stat ft_mat_insert_row(t_mat *mat, const t_vec *vec, size_t index); t_arr_stat ft_mat_insert_col(t_mat *mat, const t_vec *vec, size_t index); t_arr_stat ft_mat_append_row(t_mat *mat, const t_vec *vec); t_arr_stat ft_mat_append_col(t_mat *mat, const t_vec *vec); t_arr_stat ft_mat_erase_rows(t_mat *mat, size_t count, - size_t index, void (*free_el)(void *)); + size_t index, t_free_fun free_el); t_arr_stat ft_mat_erase_cols(t_mat *mat, size_t count, - size_t index, void (*free_el)(void *)); + size_t index, t_free_fun free_el); void *ft_mat_access(t_mat *mat, size_t row, size_t col); t_arr_stat ft_mat_zeros(t_mat *matrix, size_t rows, size_t cols); t_arr_stat ft_mat_fill(t_mat *mat, void *filler); diff --git a/inc/ft_struct.h b/inc/ft_struct.h index 5305a51..d7cb3b2 100644 --- a/inc/ft_struct.h +++ b/inc/ft_struct.h @@ -6,7 +6,7 @@ /* By: ljiriste +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/06/20 16:59:43 by ljiriste #+# #+# */ -/* Updated: 2025/08/01 14:52:17 by ljiriste ### ########.fr */ +/* Updated: 2025/08/02 16:25:28 by ljiriste ### ########.fr */ /* */ /* ************************************************************************** */ @@ -28,9 +28,9 @@ typedef struct s_stack t_ft_stat ft_stack_init(t_stack *stack, size_t el_size); t_ft_stat ft_stack_push(t_stack *stack, void *element); void *ft_stack_top(t_stack *stack); -void *ft_stack_pop(t_stack *stack, void (*free_el)(void *)); +void *ft_stack_pop(t_stack *stack, t_free_fun free_el); void *ft_stack_pop_forget(t_stack *stack); -void ft_stack_free(t_stack *stack, void (*free_el)(void *)); +void ft_stack_free(t_stack *stack, t_free_fun free_el); // t_vec reserves memory for 8 elements at first // it may be beneficial to add a member defining the number of children @@ -54,10 +54,10 @@ t_ft_stat ft_tree_append_child(t_tree_node *tree_node, void *element); t_tree_node *ft_tree_access_child(t_tree_node *tree_node, size_t i); void *ft_tree_access_data(t_tree_node *tree_node); void ft_tree_set_data(t_tree_node *tree_node, void *element); -t_ft_stat ft_tree_erase_subtree(t_tree_node *tree_node, size_t i, void (*free_el)(void *)); -t_ft_stat ft_tree_replace_with_child(t_tree_node *tree_node, size_t i, void (*free_el)(void *)); +t_ft_stat ft_tree_erase_subtree(t_tree_node *tree_node, size_t i, t_free_fun free_el); +t_ft_stat ft_tree_replace_with_child(t_tree_node *tree_node, size_t i, t_free_fun free_el); t_ft_stat ft_tree_forget_child(t_tree_node *tree_node, size_t i); -void ft_tree_free(t_tree *tree, void (*free_el)(void *)); +void ft_tree_free(t_tree *tree, t_free_fun free_el); // I wanted to use t_tree_node to define binary tree and use that // to define a red-black and AVL trees @@ -84,14 +84,14 @@ struct s_rbtree_node }; t_ft_stat ft_rbtree_init(t_rbtree *tree, size_t el_size, t_cmp_fun cmp_el); -void ft_rbtree_free(t_rbtree *tree, void (*free_el)(void *)); +void ft_rbtree_free(t_rbtree *tree, t_free_fun free_el); t_ft_stat ft_rbtree_insert(t_rbtree *tree, void *element); void *ft_rbtree_search(t_rbtree *tree, void *element); -void ft_rbtree_delete(t_rbtree *tree, void *element, void (*free_el)(void *)); +void ft_rbtree_delete(t_rbtree *tree, void *element, t_free_fun free_el); t_rbtree_node *ft_rbtree_search_node(t_rbtree_node *node, void *element); -void ft_rbtree_erase_node(t_rbtree_node *node, void (*free_el)(void *)); +void ft_rbtree_erase_node(t_rbtree_node *node, t_free_fun free_el); t_rbtree_node *ft_rbtree_decide(t_rbtree_node *node, int cmp_res); int ft_rbtree_is_black(t_rbtree_node *node);