Add dict traversal (without order choice)
authorLukáš Jiřiště <gymnazium.jiriste@gmail.com>
Thu, 14 Aug 2025 12:34:53 +0000 (14:34 +0200)
committerLukáš Jiřiště <gymnazium.jiriste@gmail.com>
Thu, 14 Aug 2025 12:34:53 +0000 (14:34 +0200)
Makefile
ft_struct/ft_dict_traversal.c [new file with mode: 0644]
inc/ft_struct.h

index d54f3a28fa56da8f4782d02030f7366d0159ec1c..d70aada2a3d4acf32f34a4b7ca94553ad46f45f2 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -46,8 +46,7 @@ SRCstruct:=   ft_stack_free.c                                                                                 \
                        ft_dict_free.c                                                                                  \
                        ft_dict_init.c                                                                                  \
                        ft_dict_insert.c                                                                                \
-
-
+                       ft_dict_traversal.c                                                                             \
 
 SRCparse:=     ft_parse.c                                                                                              \
                        ft_parsing_table_init.c                                                                 \
diff --git a/ft_struct/ft_dict_traversal.c b/ft_struct/ft_dict_traversal.c
new file mode 100644 (file)
index 0000000..20e2f98
--- /dev/null
@@ -0,0 +1,12 @@
+#include "ft_struct.h"
+
+t_ft_stat              ft_dict_traversal_init(t_dict_traversal *traversal, t_dict *dict)
+{
+       traversal->key_size = dict->key_size;
+       return (ft_rbtree_traversal_init(&traversal->traversal, &dict->tree, inorder));
+}
+
+void   *ft_dict_traverse(t_dict_traversal *traversal)
+{
+       return ((char *)ft_rbtree_traverse(&traversal->traversal) + traversal->key_size);
+}
index 39305cbec74ae169f64cd0dfc69d216e2cc3bf4e..27440dc2177b0f37dc01460db41f74d1c2b9f1e2 100644 (file)
@@ -6,7 +6,7 @@
 /*   By: ljiriste <marvin@42.fr>                    +#+  +:+       +#+        */
 /*                                                +#+#+#+#+#+   +#+           */
 /*   Created: 2024/06/20 16:59:43 by ljiriste          #+#    #+#             */
-/*   Updated: 2025/08/03 08:49:37 by ljiriste         ###   ########.fr       */
+/*   Updated: 2025/08/14 14:33:38 by ljiriste         ###   ########.fr       */
 /*                                                                            */
 /* ************************************************************************** */
 
@@ -130,6 +130,15 @@ t_ft_stat  ft_dict_insert(t_dict *dict, void *key, void *element);
 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_traversal
+{
+       size_t                          key_size;
+       t_rbtree_traversal      traversal;
+}                                              t_dict_traversal;
+
+t_ft_stat              ft_dict_traversal_init(t_dict_traversal *traversal, t_dict *dict);
+void                   *ft_dict_traverse(t_dict_traversal *traversal);
+
 # ifdef __cplusplus
 }
 # endif // __cplusplus