package decompress

  1. Overview
  2. Docs
Implementation of Zlib and GZip in OCaml

Install

Dune Dependency

Authors

Maintainers

Sources

decompress-v1.1.0.tbz
sha256=a950f91c33af4d14b25c62dd3edf7067b4020b7f39c2664a2afa925f767be2b9
sha512=abb4994150ef724b4cbf0612e0215092818139a5eca33c2365b6fdac61e4e33323da490fd8ea1adf8348c136b11a6448b1500173352f7b61f7641d32c02f3874

doc/decompress.de/De/Lz77/index.html

Module De.Lz77Source

Sourcetype src = [
  1. | `Channel of in_channel
  2. | `String of string
  3. | `Manual
]

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).

Sourcetype decode = [
  1. | `Flush
  2. | `Await
  3. | `End
]
Sourcetype state

The type for states.

Sourceval literals : state -> literals

literals s is frequencies of lengths and literals emitted by s since it was created.

Sourceval distances : state -> distances

distances s is frequencies of distances emitted by s since it was created.

Sourceval checksum : state -> optint

checksum s is ADLER-32 checksum of consumed inputs.

Sourceval src : state -> bigstring -> int -> int -> unit

src s i j l provides s with l bytes to read, starting at j in i. This byte range is read by calls to compress with s until `Await is returned. To signal the end of input call the function with l = 0.

Sourceval src_rem : state -> int

src_rem s is how many bytes it remains in given input buffer.

Sourceval compress : state -> decode

compress s is:

  • `Await if s has a `Manual input source and awits for more input. The client must use src to provide it.
  • `Flush if s filled completely the shared-queue q (given in state). Queue.junk_exn or Queue.pop_exn can be used to give some free cells to compress.
  • `End if s compressed all input. Given shared-queue q is possibly not empty.
Sourceval state : src -> w:window -> q:Queue.t -> state

state src ~w ~q is an state that inputs from src and that outputs to q.

Window.

The client can constrain lookup operation by a window. Small window enforces compress to emit small distances. However, large window allows compress to go furthermore to recognize a pattern which can be expensive.

OCaml

Innovation. Community. Security.