summaryrefslogtreecommitdiff
path: root/qstd
diff options
context:
space:
mode:
Diffstat (limited to 'qstd')
-rw-r--r--qstd/str.c9
-rw-r--r--qstd/str.h1
2 files changed, 10 insertions, 0 deletions
diff --git a/qstd/str.c b/qstd/str.c
index 49ad396..2c74d4b 100644
--- a/qstd/str.c
+++ b/qstd/str.c
@@ -11,6 +11,15 @@ uint64_t fnv1a64(uint8_t* buf, size_t size) {
return hash;
}
+uint64_t fnv1a64_2(uint64_t hash, uint8_t* buf, size_t size) {
+ size_t i;
+ for (i = 0; i < size; i++, buf++) {
+ hash ^= *buf;
+ hash *= 0x100000001b3;
+ }
+ return hash;
+}
+
uint32_t hash_string(const char* s) {
uint32_t h = 2166136261u;
for (; *s; s++) {
diff --git a/qstd/str.h b/qstd/str.h
index 308e92d..011fc27 100644
--- a/qstd/str.h
+++ b/qstd/str.h
@@ -7,6 +7,7 @@
struct Arena;
uint64_t fnv1a64(uint8_t* buf, size_t size);
+uint64_t fnv1a64_2(uint64_t h, uint8_t* buf, size_t size);
uint32_t hash_string(const char* s);
int string_equal(const char* a, const char* b);