De.Lz77The 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).
literals s is frequencies of lengths and literals emitted by s since it was created.
distances s is frequencies of distances emitted by s since it was created.
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.
val src_rem : state -> intsrc_rem s is how many bytes it remains in given input buffer.
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.val make_window : bits:int -> window