changeset 469: | 7354623e5b54 |
parent: | b719ae57647d |
child: | 4dd7b6320efc |
author: | Richard Westhaver <ellis@rwest.io> |
date: | Sat, 22 Jun 2024 19:45:19 -0400 |
permissions: | -rw-r--r-- |
description: | define-alien-enum, zstd, skel, and pod work |
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 | ||
469
7354623e5b54
define-alien-enum, zstd, skel, and pod work
Richard Westhaver <ellis@rwest.io>
parents:
438
diff
changeset
|
13 | (define-alien-enum (zstd-enddirective int :default :error :test eq) |
7354623e5b54
define-alien-enum, zstd, skel, and pod work
Richard Westhaver <ellis@rwest.io>
parents:
438
diff
changeset
|
14 | :e-continue 0 |
7354623e5b54
define-alien-enum, zstd, skel, and pod work
Richard Westhaver <ellis@rwest.io>
parents:
438
diff
changeset
|
15 | :e-flush 1 |
7354623e5b54
define-alien-enum, zstd, skel, and pod work
Richard Westhaver <ellis@rwest.io>
parents:
438
diff
changeset
|
16 | :e-end 2) |
438 | 17 | |
469
7354623e5b54
define-alien-enum, zstd, skel, and pod work
Richard Westhaver <ellis@rwest.io>
parents:
438
diff
changeset
|
18 | (define-alien-variable "ZSTD_frameParameters" int) |
438 | 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)))))) |