MOS Source Code
Loading...
Searching...
No Matches
hashmap.hpp
Go to the documentation of this file.
1// SPDX-License-Identifier: GPL-3.0-or-later
2
3#pragma once
4
5#include <mos/allocator.hpp>
8#include <mos/types.hpp>
9#include <mos_stdlib.hpp>
10
17
18typedef hash_t (*hashmap_hash_t)(const uintn key);
19typedef int (*hashmap_key_compare_t)(const uintn key1, const uintn key2);
20typedef bool (*hashmap_foreach_func_t)(const uintn key, void *value, void *data);
21
22struct hashmap_entry_t;
23
34
35MOSAPI void hashmap_init(hashmap_t *map, size_t capacity, hashmap_hash_t hash_func, hashmap_key_compare_t compare_func);
37
38MOSAPI void *hashmap_put(hashmap_t *map, uintn key, void *value);
39MOSAPI void *hashmap_get(hashmap_t *map, uintn key);
40MOSAPI void *hashmap_remove(hashmap_t *map, uintn key);
41
42MOSAPI void hashmap_foreach(hashmap_t *map, hashmap_foreach_func_t func, void *data);
43
MOSAPI void * hashmap_get(hashmap_t *map, uintn key)
Definition hashmap.cpp:92
MOSAPI void * hashmap_put(hashmap_t *map, uintn key, void *value)
Definition hashmap.cpp:64
MOSAPI void hashmap_deinit(hashmap_t *map)
Deinitialize a hashmap.
Definition hashmap.cpp:45
int(* hashmap_key_compare_t)(const uintn key1, const uintn key2)
A hashmap hash function prototype.
Definition hashmap.hpp:19
hash_t(* hashmap_hash_t)(const uintn key)
Definition hashmap.hpp:18
MOSAPI void hashmap_init(hashmap_t *map, size_t capacity, hashmap_hash_t hash_func, hashmap_key_compare_t compare_func)
Definition hashmap.cpp:20
MOSAPI void * hashmap_remove(hashmap_t *map, uintn key)
Definition hashmap.cpp:113
MOSAPI void hashmap_foreach(hashmap_t *map, hashmap_foreach_func_t func, void *data)
Definition hashmap.cpp:142
bool(* hashmap_foreach_func_t)(const uintn key, void *value, void *data)
A hashmap key comparison function prototype.
Definition hashmap.hpp:20
MOSAPI int(2, 3) sprintf(char *__restrict str
#define MOSAPI
Definition mos_global.h:112
int bool
Definition pb_syshdr.h:57
Definition types.h:93
Definition hashmap.cpp:14
s32 magic
Definition hashmap.hpp:26
spinlock_t lock
Definition hashmap.hpp:32
size_t size
Definition hashmap.hpp:29
hashmap_hash_t hash_func
Definition hashmap.hpp:30
hashmap_key_compare_t key_compare_func
Definition hashmap.hpp:31
hashmap_entry_t ** entries
Definition hashmap.hpp:27
size_t capacity
Definition hashmap.hpp:28
signed int s32
Definition types.h:11
unsigned long uintn
Definition types.h:26