Add set-script-variables.
[lw2-viewer.git] / src / hash-utils.lisp
blobdfb04eb314dc585b208a65cf46fe5648b20e954c
1 (uiop:define-package #:lw2.hash-utils
2 (:use #:cl)
3 (:import-from #:flexi-streams #:string-to-octets #:octets-to-string)
4 (:export #:city-hash-128-vector #:hash-string #:hash-printable-object #:hash-file-list)
5 (:recycle #:lw2.lmdb))
7 (in-package #:lw2.hash-utils)
9 (defun city-hash-128-vector (data)
10 (apply #'concatenate
11 (cons 'vector (map 'list #'bit-smasher:int->octets
12 (multiple-value-list
13 (city-hash:city-hash-128 data))))))
15 (defun hash-string (string)
16 (city-hash-128-vector (string-to-octets string :external-format :utf-8)))
18 (defun hash-printable-object (object)
19 (hash-string (write-to-string object :circle nil :escape nil :pretty nil)))
21 (defun hash-file-list (file-list)
22 (city-hash-128-vector
23 (apply #'concatenate
24 `((vector character)
25 ,@(map 'list (lambda (f) (uiop:read-file-string (uiop:subpathname (asdf:system-source-directory "lw2-viewer") f))) file-list)))))