-
Notifications
You must be signed in to change notification settings - Fork 0
/
HashMap.h
42 lines (36 loc) · 1.04 KB
/
HashMap.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#pragma once
#include "TypeDef.h"
#include <stdint.h>
//##############################
//DEFINITIONS
//##############################
#define BUCKET_ARRAY_INIT_SIZE 1
//##############################
//STRUCTS
//##############################
typedef struct HashNode
{
const char* key;
voidPtr_t value;
uint64_t hash_code;
struct HashNode* next;
} HashNode;
typedef struct HashMap
{
HashNode** bucket_array;
uint32_t num_buckets;
uint32_t size;
} HashMap;
//##############################
//FUNCTIONS
//##############################
void HashMapInitialize(HashMap* _hashMap);
voidPtr_t HashMapRemove(HashMap* _hashMap, const char* _key);
voidPtr_t HashMapGet(const HashMap* _hashMap, const char* _key);
void HashMapAdd(HashMap* _hashMap, const char* _key, voidPtr_t _value);
void HashMapDestroy(HashMap* _hashMap);
//##############################
//PRIVATE
//##############################
static uint64_t HashCode(const char* _key);
static uint32_t GetBucketIndex(const HashMap* _hashMap, const char* _key);