Coverage report: /home/ellis/comp/core/ffi/zstd/stream.lisp
Kind | Covered | All | % |
expression | 31 | 88 | 35.2 |
branch | 0 | 0 | nil |
Key
Not instrumented
Conditionalized out
Executed
Not executed
Both branches taken
One branch taken
Neither branch taken
1
;;; stream1.lisp --- Zstd Streaming v1 API
8
(deferror zstd-dstream-error (zstd-alien-error) ())
9
(deferror zstd-cstream-error (zstd-alien-error)
11
(:report (lambda (c s)
12
(format s "ZSTD CStream signalled error: ~A" (zstd-errorcode* (zstd-error-code c))))))
14
(defun zstd-dstream-error (code)
15
(error 'zstd-dstream-error :code code))
17
(defun zstd-cstream-error (code)
18
(error 'zstd-cstream-error :code code))
20
(define-alien-type zstd-cstream zstd-cctx)
22
(defar "ZSTD_createCStream" (* zstd-cstream))
23
(defar "ZSTD_freeCStream" void (zcs (* zstd-cstream)))
25
(define-alien-enum (zstd-enddirective int :default :error :test eq)
30
(define-alien-variable "ZSTD_frameParameters" int)
32
Alternative for ZSTD_compressStream2(zcs, output, input, ZSTD_e_continue).
33
NOTE: The return value is different. ZSTD_compressStream() returns a hint for
34
the next read size (if non-zero and not an error). ZSTD_compressStream2()
35
returns the minimum nb of bytes left to flush (if non-zero and not an error).
37
(defar "ZSTD_initCStream" size-t (zcs (* zstd-cstream)) (compression-level int))
38
(defar "ZSTD_compressStream" size-t (zcs (* zstd-cstream)) (output (* zstd-outbuffer)) (input (* zstd-inbuffer)))
40
(defar "ZSTD_compressStream2" size-t
42
(output (* zstd-outbuffer))
43
(input (* zstd-inbuffer))
44
(end-op zstd-enddirective))
46
(defar "ZSTD_CStreamInSize" size-t)
47
(defar "ZSTD_CStreamOutSize" size-t)
49
(defar "ZSTD_flushStream" size-t (zcs (* zstd-cstream)) (output (* zstd-outbuffer)))
50
(defar "ZSTD_endStream" size-t (zcs (* zstd-cstream)) (output (* zstd-outbuffer)))
52
(define-alien-type zstd-dstream zstd-dctx)
54
(defar "ZSTD_createDStream" (* zstd-dstream))
55
(defar "ZSTD_freeDStream" void (zds (* zstd-dstream)))
56
;; returns recommended first input size
57
(defar "ZSTD_initDStream" size-t (zds (* zstd-dstream)))
60
@return : 0 when a frame is completely decoded and fully flushed, or an error
61
code, which can be tested using ZSTD_isError(), or any other value >
62
0, which means there is some decoding or flushing to do to complete
65
Note: when an operation returns with an error code, the @zds state may be left
66
in undefined state. It's UB to invoke `ZSTD_decompressStream()` on such
67
a state. In order to re-use such a state, it must be first reset, which
68
can be done explicitly (`ZSTD_DCtx_reset()`), or is implied for
69
operations starting some new decompression job (`ZSTD_initDStream`,
70
`ZSTD_decompressDCtx()`, `ZSTD_decompress_usingDict()`)
72
(defar "ZSTD_decompressStream" size-t
73
(zds (* zstd-dstream))
74
(output (* zstd-outbuffer))
75
(input (* zstd-inbuffer)))
77
(defar "ZSTD_DStreamInSize" size-t)
78
(defar "ZSTD_DStreamOutSize" size-t)
80
(defmacro with-zstd-inbuffer ((iv &key src size pos) &body body)
81
`(with-alien ((,iv (* zstd-inbuffer) (allocate-zstd-inbuffer)))
84
,@(when src `((setf (zstd-inbuffer-src ,iv) ,src)))
85
,@(when size `((setf (zstd-inbuffer-size ,iv) ,size)))
86
,@(when pos `((setf (zstd-inbuffer-pos ,iv) ,pos)))
90
(defmacro with-zstd-outbuffer ((ov &key dst size pos) &body body)
91
`(with-alien ((,ov (* zstd-outbuffer) (allocate-zstd-outbuffer)))
94
,@(when dst `((setf (zstd-outbuffer-dst ,ov) ,dst)))
95
,@(when size `((setf (zstd-outbuffer-size ,ov) ,size)))
96
,@(when pos `((setf (zstd-outbuffer-pos ,ov) ,pos)))
100
(defmacro with-zstd-buffers ((iv ov &key src src-size src-pos dst dst-size dst-pos) &body body)
101
`(with-alien ((,iv (* zstd-inbuffer) (allocate-zstd-inbuffer))
102
(,ov (* zstd-outbuffer) (allocate-zstd-outbuffer)))
105
,@(when src `((setf (zstd-inbuffer-src ,iv) ,src)))
106
,@(when src-size `((setf (zstd-inbuffer-size ,iv) ,src-size)))
107
,@(when src-pos `((setf (zstd-inbuffer-pos ,iv) ,src-pos)))
108
,@(when dst `((setf (zstd-outbuffer-dst ,ov) ,dst)))
109
,@(when dst-size `((setf (zstd-outbuffer-size ,ov) ,dst-size)))
110
,@(when dst-pos `((setf (zstd-outbuffer-pos ,ov) ,dst-pos)))
115
(defmacro with-zstd-cstream ((cv &key (init t) (close t) (level (zstd-defaultclevel)) ) &body body)
116
`(with-alien ((,cv (* zstd-cstream) (zstd-createcstream)))
119
,@(when init `((let ((%cinit (zstd-initcstream ,cv ,level)))
120
(unless (zerop (zstd-iserror %cinit))
121
(zstd-cstream-error %cinit)))))
123
,@(when close `((zstd-freecstream ,cv))))))
125
(defmacro with-zstd-dstream ((dv &key (init t) (close t)) &body body)
126
`(with-alien ((,dv (* zstd-dstream) (zstd-createdstream)))
129
,@(when init `((let ((%dinit (zstd-initdstream ,dv)))
130
(unless (zerop (zstd-iserror %dinit))
131
(zstd-dstream-error %dinit)))))
133
,@(when close `((zstd-freedstream ,dv))))))
135
(defmacro with-zstd-streams ((cv dv &key (init t) (close t) (level (zstd-defaultclevel))) &body body)
136
`(with-alien ((,cv (* zstd-cstream) (zstd-createcstream))
137
(,dv (* zstd-dstream) (zstd-createdstream)))
140
,@(when init `((let ((%cinit (zstd-initcstream ,cv ,level))
141
(%dinit (zstd-initdstream ,dv)))
143
(unless (zerop (zstd-iserror %cinit))
144
(zstd-cstream-error %cinit))
145
(unless (zerop (zstd-iserror %cinit))
146
(zstd-cstream-error %dinit)))))
148
,@(when close `((zstd-freecstream ,cv)
149
(zstd-freedstream ,dv))))))