blob: d0ed1d265962ace0daec7f588f8f969d8e1b7f89 [file] [log] [blame]
/*
* mbtk_map.h
*
* Created on: Aug 18, 2020
* Author: lb
*/
#ifndef MBTK_MAP_H_
#define MBTK_MAP_H_
#include "mbtk_type.h"
typedef void (*map_free_func)(void *data);
typedef struct map_data
{
char *key;
void *value;
struct map_data *next;
} map_data_t;
typedef struct
{
uint32 size;
uint32 capacity;
uint32 cur_index;
map_data_t *cur_data;
map_free_func free_func;
map_data_t **map_array;
} map_node_t;
map_node_t* map_create(uint32 capacity, map_free_func free_func);
uint32 map_size(map_node_t* map);
uint32 map_hash(const char* key, uint32 capacity);
void map_put(map_node_t* map, const char* key, void* value);
void* map_get(map_node_t* map, char* key);
void* map_remove(map_node_t* map, char* key);
void map_first(map_node_t *map);
void* map_next(map_node_t *map);
void map_clear(map_node_t* map);
void map_free(map_node_t* map);
#endif /* MBTK_MAP_H_ */