]> git.ipfire.org Git - thirdparty/systemd.git/blame - src/basic/hash-funcs.h
tree-wide: remove Lennart's copyright lines
[thirdparty/systemd.git] / src / basic / hash-funcs.h
CommitLineData
53e1b683 1/* SPDX-License-Identifier: LGPL-2.1+ */
758dd67e
LP
2#pragma once
3
4/***
758dd67e 5 Copyright 2014 Michal Schmidt
758dd67e
LP
6***/
7
8#include "macro.h"
9#include "siphash24.h"
10
11typedef void (*hash_func_t)(const void *p, struct siphash *state);
12typedef int (*compare_func_t)(const void *a, const void *b);
13
14struct hash_ops {
15 hash_func_t hash;
16 compare_func_t compare;
17};
18
19void string_hash_func(const void *p, struct siphash *state);
20int string_compare_func(const void *a, const void *b) _pure_;
21extern const struct hash_ops string_hash_ops;
22
46e16b34
LP
23void path_hash_func(const void *p, struct siphash *state);
24int path_compare_func(const void *a, const void *b) _pure_;
25extern const struct hash_ops path_hash_ops;
26
27/* This will compare the passed pointers directly, and will not dereference them. This is hence not useful for strings
28 * or suchlike. */
758dd67e
LP
29void trivial_hash_func(const void *p, struct siphash *state);
30int trivial_compare_func(const void *a, const void *b) _const_;
31extern const struct hash_ops trivial_hash_ops;
32
9bac7d42
LP
33/* 32bit values we can always just embed in the pointer itself, but in order to support 32bit archs we need store 64bit
34 * values indirectly, since they don't fit in a pointer. */
758dd67e
LP
35void uint64_hash_func(const void *p, struct siphash *state);
36int uint64_compare_func(const void *a, const void *b) _pure_;
37extern const struct hash_ops uint64_hash_ops;
38
9bac7d42
LP
39/* On some archs dev_t is 32bit, and on others 64bit. And sometimes it's 64bit on 32bit archs, and sometimes 32bit on
40 * 64bit archs. Yuck! */
758dd67e
LP
41#if SIZEOF_DEV_T != 8
42void devt_hash_func(const void *p, struct siphash *state) _pure_;
43int devt_compare_func(const void *a, const void *b) _pure_;
9bac7d42 44extern const struct hash_ops devt_hash_ops;
758dd67e
LP
45#else
46#define devt_hash_func uint64_hash_func
47#define devt_compare_func uint64_compare_func
48#define devt_hash_ops uint64_hash_ops
49#endif