changelog shortlog graph tags branches changeset files file revisions raw help

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

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