Updates for release 1.1
[memstore.git] / src / compress.lisp
1 ;; -*- Mode: Common-Lisp -*-
2 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
3 ;; FILE IDENTIFICATION
4 ;;
5 ;; Name:          compress.lisp
6 ;; Purpose:       Uses zlib to compress and uncompress vectors of octets
7 ;; Author:        Kevin Rosenberg
8 ;; Date Started:  July 2011
9 ;;
10 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
11
12 (in-package #:memstore)
13
14 ;; KMR: zlib gives compression errors on random tests:
15 ;;    indices outside of input array size
16 ;; Using salza2 as default compressor
17
18 (defun compress-zlib (data)
19   (zlib:compress data :fixed))
20
21 (defun compress (data)
22   (let ((comp (salza2:compress-data
23                data
24                (make-instance 'salza2:zlib-compressor))))
25     (values comp (length comp))))
26
27 ;; KMR: zlib appears to works fine with salza2 zlib compressor, but
28 ;; moving to chipz as default decompressor as appears better supported
29 (defun uncompress-zlib (data)
30   (zlib:uncompress data))
31
32 (defun uncompress (data)
33   (chipz:decompress nil 'chipz:zlib data))