changelog shortlog graph tags branches changeset files revisions annotate raw help

Mercurial > core / lisp/lib/io/zstd.lisp

changeset 698: 96958d3eb5b0
parent: e048ca31ad61
author: Richard Westhaver <ellis@rwest.io>
date: Fri, 04 Oct 2024 22:04:59 -0400
permissions: -rw-r--r--
description: fixes
1 ;;; zstd.lisp --- Zstd IO API
2 
3 ;; High-level Zstd API
4 
5 ;;; Code:
6 (in-package :io/zstd)
7 
8 (eval-always (deferror zstd-error (io-error) () (:auto t)))
9 
10 (deferror zstd-input-error (zstd-error) () (:auto t))
11 (deferror zstd-output-error (zstd-error) () (:auto t))
12 
13 (deferror zstd-checksum-error (zstd-error) () (:auto t))
14 (deferror zstd-dictionary-error (zstd-error) () (:auto t))
15 
16 (defclass zstd-input ()
17  ((input :initform (sb-alien:make-alien zstd:zstd-inbuffer) :type zstd:zstd-inbuffer)))
18 
19 (defclass zstd-output ()
20  ((output :initform (zstd::allocate-zstd-outbuffer) :type zstd:zstd-outbuffer)))
21 
22 (defclass zstd-compressor (compressor zstd-input zstd-output)
23  ((stream :initform nil :type (or null zstd:zstd-cstream))))
24 
25 (defclass zstd-decompressor (decompressor zstd-input zstd-output)
26  ((stream :initform nil :type (or null zstd::zstd-dstream))))
27 
28 ;;; Simple API
29 (defmacro with-zstd-output ((sym &optional buffer (level #.zstd:+zstd-clevel-default+)) &body body)
30  `(let ((,sym ,(or buffer
31  (make-array #.io/flate:*compression-buffer-size*
32  :element-type 'std:octet
33  :fill-pointer 0))))
34  ,@body
35  (zstd:zstdc ,sym ,level)))
36 
37 (defmacro with-zstd-input ((sym buffer) &body body))