X-Git-Url: http://git.kpe.io/?p=memstore.git;a=blobdiff_plain;f=src%2Fcompress.lisp;fp=src%2Fcompress.lisp;h=172ff6d435fbc56743fcc61bb50300db8cf03e03;hp=0000000000000000000000000000000000000000;hb=91a4befe34e15ab6c4c74901b3a16ec370c5de02;hpb=881e2c561c5c9de3fe4bb962da256552fa03d796 diff --git a/src/compress.lisp b/src/compress.lisp new file mode 100644 index 0000000..172ff6d --- /dev/null +++ b/src/compress.lisp @@ -0,0 +1,33 @@ +;; -*- Mode: Common-Lisp -*- +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; FILE IDENTIFICATION +;; +;; Name: compress.lisp +;; Purpose: Uses zlib to compress and uncompress vectors of octets +;; Author: Kevin Rosenberg +;; Date Started: July 2011 +;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(in-package #:memstore) + +;; KMR: zlib gives compression errors on random tests: +;; indices outside of input array size +;; Using salza2 as default compressor + +(defun compress-zlib (data) + (zlib:compress data :fixed)) + +(defun compress (data) + (let ((comp (salza2:compress-data + data + (make-instance 'salza2:zlib-compressor)))) + (values comp (length comp)))) + +;; KMR: zlib appears to works fine with salza2 zlib compressor, but +;; moving to chipz as default decompressor as appears better supported +(defun uncompress-zlib (data) + (zlib:uncompress data)) + +(defun uncompress (data) + (chipz:decompress nil 'chipz:zlib data))