De.Queue
The type for queues.
A command is a small representation of a `Literal
or a `Copy
command. A `Copy
command is usually emitted by a compression algorithm to inform to copy length
byte(s) appeared offset
byte(s) before.
DEFLATE has some limitations about `Copy
command.
Raised when push_exn
is applied to a full queue.
val is_empty : t -> bool
Return true
if the given queue is empty, false
otherwise.
val is_full : t -> bool
Return true
if the given queue is full, false
otherwise.
val length : t -> int
Return the number of elements in the given queue.
val available : t -> int
Free cells available on the given queue.
push_exn q x
adds the element x
at the end of the queue q
. It raises Full
if the given queue q
is full.
pop_exn q
removes and returns the first element in the given queue q
. It raises Empty
if the given queue q
is empty.
val junk_exn : t -> int -> unit
junk_exn q n
discards n
elements in the given queue q
. If q
does not have enough elements, it raises Empty
and the given queue is unchanged.
val cmd : [ `Literal of char | `Copy of int * int | `End ] -> cmd
cmd command
is cmd
from a human-readable value.
val create : int -> t
create len
allocates a new queue, initially empty. len
must be a power of two, otherwise it raises Invalid_argument
.
val reset : t -> unit
Discard all elements from a queue.
val to_list : t -> [ `Literal of char | `Copy of int * int | `End ] list
val of_list : [ `Literal of char | `Copy of int * int | `End ] list -> t