fix dependency check logic cause config always disabled
[lunaix-os.git] / lunaix-os / includes / lunaix / ds / hstr.h
1 #ifndef __LUNAIX_HSTR_H
2 #define __LUNAIX_HSTR_H
3
4 #include <klibc/hash.h>
5
6 #define HSTR_FULL_HASH 32
7
8 struct hstr
9 {
10     unsigned int hash;
11     unsigned int len;
12     const char* value;
13 };
14
15 #define HSTR(str, length)                                                      \
16     (struct hstr)                                                              \
17     {                                                                          \
18         .len = (length), .value = (str)                                        \
19     }
20
21 #define HHSTR(str, length, strhash)                                            \
22     (struct hstr)                                                              \
23     {                                                                          \
24         .len = (length), .value = (str), .hash = (strhash)                     \
25     }
26
27 #define HSTR_EQ(str1, str2) ((str1)->hash == (str2)->hash)
28
29 #define HSTR_VAL(hstr)  ((hstr).value)
30 #define HSTR_LEN(hstr)  ((hstr).len)
31 #define HSTR_HASH(hstr) ((hstr).hash)
32
33 static inline void
34 hstr_rehash(struct hstr* hash_str, u32_t truncate_to)
35 {
36     hash_str->hash = strhash_32(hash_str->value, truncate_to);
37 }
38
39 void
40 hstrcpy(struct hstr* dest, struct hstr* src);
41
42 #endif /* __LUNAIX_HSTR_H */