]> gitweb.factorcode.org Git - factor.git/commitdiff
compression.zstd.ffi: adding more functions
authorJohn Benediktsson <mrjbq7@gmail.com>
Mon, 15 May 2023 20:36:56 +0000 (13:36 -0700)
committerJohn Benediktsson <mrjbq7@gmail.com>
Mon, 15 May 2023 21:21:34 +0000 (14:21 -0700)
basis/compression/zstd/ffi/ffi.factor

index 50061f95f07993cb788eb1fe989eff4b321e5f9e..b2e4d30462b2d6636987bf5814e573ec1547d75b 100644 (file)
@@ -1,7 +1,9 @@
 ! Copyright (C) 2021 Doug Coleman.
 ! See https://factorcode.org/license.txt for BSD license.
-USING: alien alien.c-types alien.libraries alien.syntax
-combinators system ;
+
+USING: alien alien.c-types alien.destructors alien.libraries
+alien.syntax classes.struct combinators system ;
+
 IN: compression.zstd.ffi
 
 << "zstd" {
@@ -12,6 +14,12 @@ IN: compression.zstd.ffi
 
 LIBRARY: zstd
 
+FUNCTION: uint ZSTD_versionNumber ( )
+
+FUNCTION: c-string ZSTD_versionString ( )
+
+! Simple API
+
 FUNCTION: size_t ZSTD_compress ( void* dst, size_t dstCapacity,
                                  void* src, size_t srcSize,
                                  int compressionLevel )
@@ -21,9 +29,83 @@ FUNCTION: size_t ZSTD_decompress ( void* dst, size_t dstCapacity,
 
 FUNCTION: ulonglong ZSTD_getFrameContentSize ( void *src, size_t srcSize )
 
+FUNCTION: size_t ZSTD_findFrameContentSize ( void *src, size_t srcSize )
+
+! Helper functions
+
+FUNCTION: size_t ZSTD_compressBounds ( size_t srcSize )
+
 FUNCTION: uint ZSTD_isError ( size_t code )
 
 FUNCTION: c-string ZSTD_getErrorName ( size_t code )
 
-! There are many more api calls but this is enough for basic payloads
+FUNCTION: int ZSTD_minCLevel ( )
+
+FUNCTION: int ZSTD_maxCLevel ( )
+
+FUNCTION: int ZSTD_defaultCLevel ( )
+
+! Explicit context
+
+TYPEDEF: void ZSTD_CCtx
+FUNCTION: ZSTD_CCtx* ZSTD_createCCtx ( )
+FUNCTION: size_t ZSTD_freeCCtx ( ZSTD_CCtx* cctx )
+DESTRUCTOR: ZSTD_freeCCtx
+
+FUNCTION: size_t ZSTD_compressCCtx ( ZSTD_CCtx* cctx, void* dst, size_t dstCapacity, void* src, size_t srcSize, int compressionLevel )
+
+TYPEDEF: void ZSTD_DCtx
+FUNCTION: ZSTD_DCtx* ZSTD_createDCtx ( )
+FUNCTION: size_t ZSTD_freeDCtx ( ZSTD_DCtx* dctx )
+DESTRUCTOR: ZSTD_freeDCtx
+
+FUNCTION: size_t ZSTD_decompressCCtx ( ZSTD_DCtx* dctx, void* dst, size_t dstCapacity, void* src, size_t srcSize )
+FUNCTION: size_t ZSTD_decompressStream_simpleArgs ( ZSTD_DCtx* dctx, void* dst, size_t dstCapacity, size_t* dstPos, void* src, size_t srcSize, size_t* srcPos )
+
+! Streaming
+
+STRUCT: ZSTD_inBuffer
+    { src void* }
+    { size size_t }
+    { pos size_t }
+;
+
+STRUCT: ZSTD_outBuffer
+    { dst void* }
+    { size size_t }
+    { pos size_t }
+;
+
+! Streaming compression
+
+TYPEDEF: void ZSTD_CStream
+
+FUNCTION: ZSTD_CStream* ZSTD_createCStream ( )
+FUNCTION: size_t ZSTD_freeCStream ( ZSTD_CStream* zcs )
+
+ENUM: ZSTD_EndDirective
+    ZSTD_e_continue
+    ZSTD_e_flush
+    ZSTD_e_end ;
+
+FUNCTION: size_t ZSTD_compressStream2 ( ZSTD_CCtx* cctx, ZSTD_outBuffer* output, ZSTD_inBuffer* input, ZSTD_EndDirective endOp )
+FUNCTION: size_t ZSTD_CStreamInSize ( )
+FUNCTION: size_t ZSTD_CStreamOutSize ( )
+
+FUNCTION: size_t ZSTD_initCStream ( ZSTD_CStream* zcs, int compressionLevel )
+FUNCTION: size_t ZSTD_compressStream ( ZSTD_CStream* zcs, ZSTD_outBuffer* output, ZSTD_inBuffer* input )
+FUNCTION: size_t ZSTD_flushStream ( ZSTD_CStream* zcs, ZSTD_outBuffer* output )
+FUNCTION: size_t ZSTD_endStream ( ZSTD_CStream* zcs, ZSTD_outBuffer* output )
+
+! Streaming decompression
+
+TYPEDEF: void ZSTD_DStream
+
+FUNCTION: ZSTD_DStream* ZSTD_createDStream ( )
+FUNCTION: size_t ZSTD_freeDStream ( ZSTD_DStream* zds )
+FUNCTION: size_t ZSTD_initDStream ( ZSTD_DStream* zds )
+FUNCTION: size_t ZSTD_decompressStream ( ZSTD_DStream* zds, ZSTD_outBuffer* output, ZSTD_inBuffer* input )
+FUNCTION: size_t ZSTD_DStreamInSize ( )
+FUNCTION: size_t ZSTD_DStreamOutSize ( )
 
+DESTRUCTOR: ZSTD_freeDStream