aboutsummaryrefslogtreecommitdiff
path: root/src/imap.h
blob: 0ef1665e1b2d203208ef02af3a6545124b4bc6db (plain)
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
#pragma once
#include <stddef.h>
#include <stdbool.h>
#include <stdint.h>


struct prne_imap;
struct prne_imap_tuple;
typedef uintptr_t prne_imap_key_type_t;
typedef uintptr_t prne_imap_val_type_t;
typedef struct prne_imap prne_imap_t;
typedef struct prne_imap_tuple prne_imap_tuple_t;

struct prne_imap {
	prne_imap_tuple_t *tbl;
	size_t size;
};

struct prne_imap_tuple {
	prne_imap_key_type_t key;
	prne_imap_val_type_t val;
};


void prne_init_imap (prne_imap_t *im);
void prne_free_imap (prne_imap_t *im);

void prne_imap_clear (prne_imap_t *im);
const prne_imap_tuple_t *prne_imap_insert (
	prne_imap_t *im,
	const prne_imap_key_type_t key,
	const prne_imap_val_type_t val);
void prne_imap_erase (prne_imap_t *im, const prne_imap_key_type_t key);
const prne_imap_tuple_t *prne_imap_lookup (
	prne_imap_t *im,
	const prne_imap_key_type_t key);