package decompress
Install
dune-project
Dependency
Authors
Maintainers
Sources
sha256=de149896939be13fedec46a4581121d5ab74850a2241d08e6aa8ae4bb18c52c4
sha512=324b4c2daef6ddaae2d28edcdadec8e29ebcc408eed2fed3fe4a3cb298cd78864d9ac939ae794c6ff8d9f5233a7cfa6feee62aa683ed3eb73f53ab8ea74cbffb
doc/decompress.zl/Zl/Def/index.html
Module Zl.DefSource
The type for input sources. With a `Manual source the client must provide input with src. With `String or `Channel source the client can safely discard `Await case (with assert false).
The type for output destinations. With a `Manual destination the client must provide output storage with dst. With `String or `Channel destination the client can safely discard `Flush case (with assert false).
The type for ZLIB encoders.
val encoder :
?dynamic:bool ->
q:De.Queue.t ->
w:De.Lz77.window ->
level:int ->
src ->
dst ->
encoderencoder ~q ~w ~level src dst is an encoder that inputs from src and that outputs to dst.
Internal queue.
encoder deals internally with compression algorithm and DEFLATE encoder. To pass compression values to DEFLATE encoder, we need a queue q. Length of q has an impact on performance, and small lengths can be a bottleneck, leading encode to emit many `Flush. We recommend a queue as large as output buffer.
Window.
ZLIB is able to constrain length of window used to do LZ77 compression. However, small window can slow-down LZ77 compression algorithm. Small windows are mostly used to enable inflation of output in memory-constrained environments, for example when compressed data from untrusted sources must be processed.
Level.
Current implementation of ZLIB does not handle any compression level. However, the client must give a level between 0 and 9, inclusively. Otherwise, we raise an Invalid_argument.
dst_rem e is how many unused bytes remain in the output buffer of e.
src e s j l provides e with l bytes to read, starting at j in s. This byte range is read by calls to encode with e until `Await is returned. To signal the end of input call the function with l = 0.
dst e s j l provides e with l bytes available to write, starting at j in s. This byte range is fill by calls to encode with e until `Flush is returned.
encode e0 is:
`Await e1ife0has a`Manualinput source and awaits for more input. The client must usesrcwithe1to provide it.`Flush e1ife0has a`Manualdestination and needs more output storage. The client must drain the buffer before resuming operation.`End e1ife1encoded all input. Output buffer is possibly not empty (it can be check withdst_rem).