return (ft_rbtree_traversal_init(&traversal->traversal, &dict->tree, inorder));
}
-void *ft_dict_traverse(t_dict_traversal *traversal)
+t_dict_entry ft_dict_traverse_full(t_dict_traversal *traversal)
{
- void *return_composite;
+ t_dict_entry dict_entry;
+
+ dict_entry.key = ft_rbtree_traverse(&traversal->traversal);
+ if (!dict_entry.key)
+ {
+ dict_entry.el = NULL;
+ return (dict_entry);
+ }
+ dict_entry.el = (char *)dict_entry.key + traversal->key_size;
+ return (dict_entry);
+}
- return_composite = ft_rbtree_traverse(&traversal->traversal);
- if (!return_composite)
- return (NULL);
- return ((char *)return_composite + traversal->key_size);
+void *ft_dict_traverse(t_dict_traversal *traversal)
+{
+ return (ft_dict_traverse_full(traversal).el);
}
void ft_dict_traversal_free(t_dict_traversal *traversal)
/* By: ljiriste <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2024/06/20 16:59:43 by ljiriste #+# #+# */
-/* Updated: 2025/08/14 14:41:41 by ljiriste ### ########.fr */
+/* Updated: 2025/09/17 08:36:29 by ljiriste ### ########.fr */
/* */
/* ************************************************************************** */
void *ft_dict_access(t_dict *dict, void *key);
void ft_dict_delete(t_dict *dict, void *key, t_free_fun free_key, t_free_fun free_el);
+typedef struct s_dict_entry
+{
+ void *key;
+ void *el;
+} t_dict_entry;
+
typedef struct s_dict_traversal
{
size_t key_size;
} t_dict_traversal;
t_ft_stat ft_dict_traversal_init(t_dict_traversal *traversal, t_dict *dict);
+t_dict_entry ft_dict_traverse_full(t_dict_traversal *traversal);
void *ft_dict_traverse(t_dict_traversal *traversal);
void ft_dict_traversal_free(t_dict_traversal *traversal);