Functor CCRingBuffer.Make

module Make (X : sig
type t 
val dummy : t
end: S with type Array.elt = X.t and type Array.t = X.t array
Buffer using regular arrays
Parameters:
X : sig type t val dummy : t end

module Array: CCRingBuffer.Array.S 
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.
Raises Invalid_argument if the arguments is < 1
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.
Since 1.3
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.
Raises Invalid_argument if o,len is not a valid slice of s
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.
Raises Invalid_argument if o,len is not a valid slice of s.
Returns the number of elements actually copied (min len (length buf)).
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.
Raises Empty if the buffer is already empty.
val junk_back : t -> unit
Drop the back element from t.
Raises Empty if the buffer is already empty.
val skip : t -> int -> unit
skip b len removes len elements from the front of b.
Raises Invalid_argument if len > length 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.
Raises Invalid_argument if the index is invalid (> length 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.
Raises Invalid_argument if the index is invalid (> length 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.
Since 1.3
Raises Empty if buffer is empty.
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.
Since 1.3
Raises Empty if buffer is empty.
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.
Raises Empty if buffer is already empty.
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.
Raises Empty if buffer is already empty.
val of_array : Array.t -> t
Create a buffer from an initial array, but doesn't take ownership of it (stills allocates a new internal array)
Since 0.11
val to_array : t -> Array.t
Create an array from the elements, in order.
Since 0.11