changelog shortlog graph tags branches changeset files revisions annotate raw help

Mercurial > core / lisp/ffi/zstd/stream.lisp

changeset 438: b719ae57647d
child: 7354623e5b54
author: Richard Westhaver <ellis@rwest.io>
date: Tue, 11 Jun 2024 22:44:32 -0400
permissions: -rw-r--r--
description: zstd refactoring
1 ;;; stream1.lisp --- Zstd Streaming v1 API
2 
3 ;;
4 
5 ;;; Code:
6 (in-package :zstd)
7 
8 (define-alien-type zstd-cstream zstd-cctx)
9 
10 (define-alien-routine "ZSTD_createCStream" (* zstd-cstream))
11 (define-alien-routine "ZSTD_freeCStream" void (zcs (* zstd-cstream)))
12 
13 (define-alien-type zstd-enddirective int)
14 ;; (enum nil
15 ;; (zstd-e-continue 0)
16 ;; (zstd-e-flush 1)
17 ;; (zstd-e-end 2))
18 
19 (define-alien-routine "ZSTD_compressStream2" size-t
20  (cctx (* zstd-cctx))
21  (output (* zstd-outbuffer))
22  (input (* zstd-inbuffer))
23  (end-op zstd-enddirective))
24 
25 (define-alien-routine "ZSTD_CStreamInSize" size-t)
26 (define-alien-routine "ZSTD_CStreamOutSize" size-t)
27 (define-alien-routine "ZSTD_initCStream" size-t (zcs (* zstd-cstream)) (compression-level int))
28 
29 (define-alien-routine "ZSTD_compressStream" size-t (zcs (* zstd-cstream)) (output (* zstd-outbuffer)) (input (* zstd-inbuffer)))
30 (define-alien-routine "ZSTD_flushStream" size-t (zcs (* zstd-cstream)) (output (* zstd-outbuffer)))
31 (define-alien-routine "ZSTD_endStream" size-t (zcs (* zstd-cstream)) (output (* zstd-outbuffer)))
32 
33 (define-alien-type zstd-dstream zstd-dctx)
34 
35 (define-alien-routine "ZSTD_createDStream" (* zstd-dstream))
36 (define-alien-routine "ZSTD_freeDStream" void (zds (* zstd-dstream)))
37 (define-alien-routine "ZSTD_initDStream" size-t (zds (* zstd-dstream)))
38 
39 (define-alien-routine "ZSTD_decompressStream" size-t
40  (zds (* zstd-dstream))
41  (output (* zstd-outbuffer))
42  (input (* zstd-inbuffer)))
43 
44 (define-alien-routine "ZSTD_DStreamInSize" size-t)
45 (define-alien-routine "ZSTD_DStreamOutSize" size-t)
46 
47 (defmacro with-zstd-dstream ((dv dst &key (close t)) &body body)
48  `(let ((,dv ,dst))
49  (unwind-protect (progn ,@body)
50  ,@(when close `((zstd-freedstream ,dv))))))
51 
52 (defmacro with-zstd-cstream ((cv cst &key (close t)) &body body)
53  `(let ((,cv ,cst))
54  (unwind-protect (progn ,@body)
55  ,@(when close `((zstd-freecstream ,cv))))))