/* ************************************************************************** */
/*                                                                            */
/*                                                        :::      ::::::::   */
/*   ft_hashmap_private.h                               :+:      :+:    :+:   */
/*                                                    +:+ +:+         +:+     */
/*   By: thrieg <thrieg@student.42mulhouse.fr>      +#+  +:+       +#+        */
/*                                                +#+#+#+#+#+   +#+           */
/*   Created: 2024/11/07 13:49:11 by thrieg            #+#    #+#             */
/*   Updated: 2025/02/16 19:08:30 by thrieg           ###   ########.fr       */
/*                                                                            */
/* ************************************************************************** */

#ifndef FT_HASHMAP_PRIVATE_H
# define FT_HASHMAP_PRIVATE_H

# include "../ft_hashmap.h"

typedef struct s_hash_element
{
	void	*key;
	void	*value;
	size_t	hash;
}	t_hash_element;

t_hash_element	*ft_create_hash_element(void *key, void *value, size_t hash);
void			ft_free_hash_element(t_hash_element *elem, t_hashmap *map);
int				ft_add_hashmap_element(
					size_t index,
					t_hashmap *map,
					t_hash_element *elem);
int				ft_add_hashmap_element(
					size_t index,
					t_hashmap *map,
					t_hash_element *elem);
void			ft_copy_hashmap_table(
					t_list **new_table,
					t_list **old_table,
					size_t new_size,
					size_t old_size);
void			ft_delete_hashmap_list_node(
					t_list *curr,
					t_list *prev,
					size_t index,
					t_hashmap *map);

#endif