blob: 80af052bbaa4ff2c7f3bfc65871ba8cc8b4f52b1 (
plain) (
blame)
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
|
#pragma once
#include <stdint.h>
#include <stddef.h>
#include <stdbool.h>
#define MIN(a, b) ((a)<(b)?(a):(b))
#define MAX(a, b) ((a)>(b)?(a):(b))
#define ABS(a) ((a)<0?-(a):(a))
// ============================================================= //
// FUNCTION TYPES FOR KEY-VALUE DATA STRUCTURES (HASHTBL, BTREE) //
typedef uint32_t hash_t;
typedef hash_t (*hash_fun_t)(const void*);
typedef int (*key_cmp_fun_t)(const void*, const void*);
typedef bool (*key_eq_fun_t)(const void*, const void*);
typedef void (*kv_iter_fun_t)(void* key, void* value);
// void* is considered as an unsigned integer (and not a pointer)
hash_t id_hash_fun(const void* v);
bool id_key_eq_fun(const void* a, const void* b);
int id_key_cmp_fun(const void* a, const void* b);
// void* considered as char*
hash_t str_hash_fun(const void* v);
bool str_key_eq_fun(const void* a, const void* b);
int str_key_cmp_fun(const void* a, const void* b);
// Freeing functions (they are of type kv_iter_fun_t)
void free_key(void* key, void* val);
void free_val(void* key, void* val);
void free_key_val(void* key, void* val);
/* vim: set ts=4 sw=4 tw=0 noet :*/
|