Initial import.
[salza2.git] / zlib.lisp
blobd377f0fc0387bff81486cb8dfe3aaf9451e68b4f
1 ;;;; $Id: zlib.lisp,v 1.10 2007/12/20 16:30:09 xach Exp $
3 (in-package #:salza2)
5 (defclass zlib-compressor (deflate-compressor)
6 ((adler32
7 :initarg :adler32
8 :accessor adler32))
9 (:default-initargs
10 :adler32 (make-instance 'adler32-checksum)))
12 (defmethod start-data-format :before ((compressor zlib-compressor))
13 (let ((bitstream (bitstream compressor)))
14 ;; FIXME: Replace these naked constants with symbolic constants.
15 (write-octet 8 bitstream)
16 (write-octet 153 bitstream)))
18 (defmethod process-input :after ((compressor zlib-compressor) input start count)
19 (let ((checksum (adler32 compressor)))
20 (update checksum input start count)))
22 (defmethod finish-data-format :after ((compressor zlib-compressor))
23 (let ((bitstream (bitstream compressor)))
24 (dolist (octet (result-octets (adler32 compressor)))
25 (write-octet octet bitstream))))