Mercurial > core / lisp/ffi/zstd/stream.lisp
changeset 657: |
937a6f354047 |
parent: |
4dd7b6320efc
|
author: |
Richard Westhaver <ellis@rwest.io> |
date: |
Wed, 18 Sep 2024 21:48:06 -0400 |
permissions: |
-rw-r--r-- |
description: |
zstd tests and macros |
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 (define-alien-routine "ZSTD_createCStream" (* zstd-cstream)) 23 (define-alien-routine "ZSTD_freeCStream" void (zcs (* zstd-cstream))) 25 (define-alien-enum (zstd-enddirective int :default :error :test eq) 30 (define-alien-variable "ZSTD_frameParameters" int) 31 (define-alien-routine "ZSTD_compressStream2" size-t 33 (output (* zstd-outbuffer)) 34 (input (* zstd-inbuffer)) 35 (end-op zstd-enddirective)) 37 (define-alien-routine "ZSTD_CStreamInSize" size-t) 38 (define-alien-routine "ZSTD_CStreamOutSize" size-t) 39 (define-alien-routine "ZSTD_initCStream" size-t (zcs (* zstd-cstream)) (compression-level int)) 41 (define-alien-routine "ZSTD_compressStream" size-t (zcs (* zstd-cstream)) (output (* zstd-outbuffer)) (input (* zstd-inbuffer))) 42 (define-alien-routine "ZSTD_flushStream" size-t (zcs (* zstd-cstream)) (output (* zstd-outbuffer))) 43 (define-alien-routine "ZSTD_endStream" size-t (zcs (* zstd-cstream)) (output (* zstd-outbuffer))) 45 (define-alien-type zstd-dstream zstd-dctx) 47 (define-alien-routine "ZSTD_createDStream" (* zstd-dstream)) 48 (define-alien-routine "ZSTD_freeDStream" void (zds (* zstd-dstream))) 49 (define-alien-routine "ZSTD_initDStream" size-t (zds (* zstd-dstream))) 51 (define-alien-routine "ZSTD_decompressStream" size-t 52 (zds (* zstd-dstream)) 53 (output (* zstd-outbuffer)) 54 (input (* zstd-inbuffer))) 56 (define-alien-routine "ZSTD_DStreamInSize" size-t) 57 (define-alien-routine "ZSTD_DStreamOutSize" size-t) 59 (defmacro with-zstd-inbuffer ((iv &key src size pos) &body body) 60 `(with-alien ((,iv (* zstd-inbuffer) (allocate-zstd-inbuffer))) 63 ,@(when src `((setf (zstd-inbuffer-src ,iv) ,src))) 64 ,@(when size `((setf (zstd-inbuffer-size ,iv) ,size))) 65 ,@(when pos `((setf (zstd-inbuffer-pos ,iv) ,pos))) 69 (defmacro with-zstd-outbuffer ((ov &key dst size pos) &body body) 70 `(with-alien ((,ov (* zstd-outbuffer) (allocate-zstd-outbuffer))) 73 ,@(when dst `((setf (zstd-outbuffer-dst ,ov) ,dst))) 74 ,@(when size `((setf (zstd-outbuffer-size ,ov) ,size))) 75 ,@(when pos `((setf (zstd-outbuffer-pos ,ov) ,pos))) 79 (defmacro with-zstd-buffers ((iv ov &key src src-size src-pos dst dst-size dst-pos) &body body) 80 `(with-alien ((,iv (* zstd-inbuffer) (allocate-zstd-inbuffer)) 81 (,ov (* zstd-outbuffer) (allocate-zstd-outbuffer))) 84 ,@(when src `((setf (zstd-inbuffer-src ,iv) ,src))) 85 ,@(when src-size `((setf (zstd-inbuffer-size ,iv) ,src-size))) 86 ,@(when src-pos `((setf (zstd-inbuffer-pos ,iv) ,src-pos))) 87 ,@(when dst `((setf (zstd-outbuffer-dst ,ov) ,dst))) 88 ,@(when dst-size `((setf (zstd-outbuffer-size ,ov) ,dst-size))) 89 ,@(when dst-pos `((setf (zstd-outbuffer-pos ,ov) ,dst-pos))) 94 (defmacro with-zstd-cstream ((cv &key (init t) (close t) (level (zstd-defaultclevel)) ) &body body) 95 `(with-alien ((,cv (* zstd-cstream) (zstd-createcstream))) 98 ,@(when init `((let ((%cinit (zstd-initcstream ,cv ,level))) 99 (unless (zerop (zstd-iserror %cinit)) 100 (zstd-cstream-error %cinit))))) 102 ,@(when close `((zstd-freecstream ,cv)))))) 104 (defmacro with-zstd-dstream ((dv &key (init t) (close t)) &body body) 105 `(with-alien ((,dv (* zstd-dstream) (zstd-createdstream))) 108 ,@(when init `((let ((%dinit (zstd-initdstream ,dv))) 109 (unless (zerop (zstd-iserror %dinit)) 110 (zstd-dstream-error %dinit))))) 112 ,@(when close `((zstd-freedstream ,dv)))))) 114 (defmacro with-zstd-streams ((cv dv &key (init t) (close t) (level (zstd-defaultclevel))) &body body) 115 `(with-alien ((,cv (* zstd-cstream) (zstd-createcstream)) 116 (,dv (* zstd-dstream) (zstd-createdstream))) 119 ,@(when init `((let ((%cinit (zstd-initcstream ,cv ,level)) 120 (%dinit (zstd-initdstream ,dv))) 122 (unless (zerop (zstd-iserror %cinit)) 123 (zstd-cstream-error %cinit)) 124 (unless (zerop (zstd-iserror %cinit)) 125 (zstd-cstream-error %dinit))))) 127 ,@(when close `((zstd-freecstream ,cv) 128 (zstd-freedstream ,dv))))))