438
|
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)))))) |