aboutsummaryrefslogtreecommitdiff
path: root/src/libsok/sok-ctx-hash.c
diff options
context:
space:
mode:
authorPaul Duncan <pabs@pablotron.org>2019-01-15 09:16:56 -0500
committerPaul Duncan <pabs@pablotron.org>2019-01-15 09:16:56 -0500
commit3e658ed87b5795b2be8f50d683dc19241aba0111 (patch)
tree0bc3b6e61e476e7ecdcb3c20429b159ea5465ae2 /src/libsok/sok-ctx-hash.c
parent914ca426630ccadcbb6f1ff02a599bdaf10b6cb2 (diff)
downloadsok-3e658ed87b5795b2be8f50d683dc19241aba0111.tar.bz2
sok-3e658ed87b5795b2be8f50d683dc19241aba0111.zip
s/libsok/core/g
Diffstat (limited to 'src/libsok/sok-ctx-hash.c')
-rw-r--r--src/libsok/sok-ctx-hash.c41
1 files changed, 0 insertions, 41 deletions
diff --git a/src/libsok/sok-ctx-hash.c b/src/libsok/sok-ctx-hash.c
deleted file mode 100644
index 61689ea..0000000
--- a/src/libsok/sok-ctx-hash.c
+++ /dev/null
@@ -1,41 +0,0 @@
-#include <stdint.h> // uint16_t
-#include "sok.h"
-
-// fnv64
-// src: https://en.wikipedia.org/wiki/Fowler–Noll–Vo_hash_function
-#define FNV_OFFSET 1099511628211
-#define FNV_PRIME 0xcbf29ce484222325
-
-static uint64_t
-fnv1a(
- const uint8_t * const buf,
- const size_t len
-) {
- uint64_t hash = FNV_OFFSET;
-
- for (size_t i = 0; i < len; i++) {
- hash ^= buf[i];
- hash *= FNV_PRIME;
- }
-
- return hash;
-}
-
-uint64_t
-sok_ctx_hash(
- const sok_ctx_t * const ctx
-) {
- uint16_t buf[512] = {ctx->home.x, ctx->home.y, 0};
- const size_t BUF_MASK = (sizeof(buf) / sizeof(uint16_t) - 1);
-
- for (size_t i = 0; i < ctx->level.num_boxes; i++) {
- buf[(2 * (i + 1) + 0) & BUF_MASK] = ctx->boxes[i].x;
- buf[(2 * (i + 1) + 1) & BUF_MASK] = ctx->boxes[i].y;
- }
-
- // calculate buffer length
- const size_t used = 2 * (ctx->level.num_boxes + 1) * sizeof(uint16_t);
- const size_t len = (used < sizeof(buf)) ? used : sizeof(buf);
-
- return fnv1a((uint8_t*) buf, len);
-}