Module Zl.Higher

val compress : ?level:int -> ?dynamic:bool -> w:De.Lz77.window -> q:De.Queue.t -> refill:(bigstring -> int) -> flush:(bigstring -> int -> unit) -> bigstring -> bigstring -> unit

compress ?level ~w ~q ~refill ~flush i o is Zlib.compress (with ~header:true) provided by camlzip package.

  • w is the window used by LZ77 compression algorithm.
  • q is shared-queue between compression algorithm and DEFLATE encoder.
  • i is input buffer.
  • o is output buffer.

When compress wants more input, it calls refill with i. The client returns how many bytes he wrote into i. If he returns 0, he signals end of input.

When compress has written output buffer, it calls flush with o and how many bytes it wrote.

val uncompress : allocate:(int -> window) -> refill:(bigstring -> int) -> flush:(bigstring -> int -> unit) -> bigstring -> bigstring -> (unit, [> `Msg of string ]) result

uncompress ~allocate ~refill ~flush i o is Zlib.uncompress (with ~header:true) provided by camlzip package.

  • allocate is the allocator of window used by LZ77 uncompression algorithm
  • i is input buffer.
  • o is output buffer.

When compress wants more input, it calls refill with i. The client returns how many bytes he wrote into i. If he returns 0, he signals end of input.

When compress has written output buffer, it calls flush with o and how many bytes it wrote.