Module CCRingBuffer.Make

Buffer using regular arrays

Parameters

X : sig ... end

Signature

module Array : Array.S with type elt = X.t and type t = X.t array

The module type of Array for this ring buffer

type t

Defines the bounded ring buffer type

exception Empty

Raised in querying functions when the buffer is empty

val create : int ‑> t

create size creates a new bounded buffer with given size. The underlying array is allocated immediately and no further (large) allocation will happen from now on.

val copy : t ‑> t

Make a fresh copy of the buffer.

val capacity : t ‑> int

Length of the inner buffer.

val length : t ‑> int

Number of elements currently stored in the buffer.

val is_full : t ‑> bool

true if pushing an element would erase another element.

val blit_from : t ‑> Array.t ‑> int ‑> int ‑> unit

blit_from buf from_buf o len copies the slice o, ... o + len - 1 from a input buffer from_buf to the end of the buffer. If the slice is too large for the buffer, only the last part of the array will be copied.

val blit_into : t ‑> Array.t ‑> int ‑> int ‑> int

blit_into buf to_buf o len copies at most len elements from buf into to_buf starting at offset o in s.

val append : t ‑> into:t ‑> unit

append b ~into copies all data from b and adds it at the end of into. Erases data of into if there is not enough room.

val to_list : t ‑> Array.elt list

Extract the current content into a list.

val clear : t ‑> unit

Clear the content of the buffer. Doesn't actually destroy the content.

val is_empty : t ‑> bool

Is the buffer empty (i.e. contains no elements)?

val junk_front : t ‑> unit

Drop the front element from t.

val junk_back : t ‑> unit

Drop the back element from t.

val skip : t ‑> int ‑> unit

skip b len removes len elements from the front of b.

val iter : t ‑> f:(Array.elt ‑> unit) ‑> unit

iter b ~f calls f i t for each element t in buf.

val iteri : t ‑> f:(int ‑> Array.elt ‑> unit) ‑> unit

iteri b ~f calls f i t for each element t in buf, with i being its relative index within buf.

val get_front : t ‑> int ‑> Array.elt

get_front buf i returns the i-th element of buf from the front, ie the one returned by take_front buf after i-1 calls to junk_front buf.

val get_back : t ‑> int ‑> Array.elt

get_back buf i returns the i-th element of buf from the back, ie the one returned by take_back buf after i-1 calls to junk_back buf.

val push_back : t ‑> Array.elt ‑> unit

Push value at the back of t. If t.bounded=false, the buffer will grow as needed, otherwise the oldest elements are replaced first.

val peek_front : t ‑> Array.elt option

First value from front of t, without modification.

val peek_front_exn : t ‑> Array.elt

First value from front of t, without modification.

val peek_back : t ‑> Array.elt option

Get the last value from back of t, without modification.

val peek_back_exn : t ‑> Array.elt

Get the last value from back of t, without modification.

val take_back : t ‑> Array.elt option

Take and remove the last value from back of t, if any.

val take_back_exn : t ‑> Array.elt

Take and remove the last value from back of t.

val take_front : t ‑> Array.elt option

Take and remove the first value from front of t, if any.

val take_front_exn : t ‑> Array.elt

Take and remove the first value from front of t.

val of_array : Array.t ‑> t

Create a buffer from an initial array, but doesn't take ownership of it (still allocates a new internal array).

val to_array : t ‑> Array.t

Create an array from the elements, in order.