package ringo

  1. Overview
  2. Docs

Module Ringo.RingSource

Ring is a potentially useful module that is used internally to manage bounded, FIFO collections of items. The documentation is available in UNBOXED_COLLECTION.

It is implemented as an abstraction over an array.

See Dll for a comparison.

Sourcetype 'a t

The type of bounded-size buffers.

Sourceval create : int -> 'a t

create n allocates a ring buffer that can hold up to n values.

  • raises [Invalid_argument]

    if n is 0 or less.

Sourceval capacity : 'a t -> int

capacity b is the number of elements that b can hold.

Sourceval length : 'a t -> int

length b is the number of elements that are currently in b.

Sourceval add : 'a t -> 'a -> unit

add b v adds the value v to the buffer b. If the buffer b already has capacity b values, the oldest of its values is dropped.

Sourceval add_and_return_erased : 'a t -> 'a -> 'a option

add_and_return_erased b v has the same effect as add b v but it returns the dropped value when applicable.

Sourceval add_list : 'a t -> 'a list -> unit

add_list b vs adds each element of the list vs in the order they appear in the list. Note that if List.length vs > capacity b, then only the last capacity b elements of the list remain in b at the end.

Sourceval remove_oldest : 'a t -> 'a option

remove_oldest b removes and returns the oldest inserted element from the buffer b or None if the buffer is empty.

Note that for some collections, the removed element might still be held in memory. It will be removed eventually after other elements are added.

Sourceval remove_newest : 'a t -> 'a option

remove_newest b removes and returns the most recently inserted element from the buffer b or None if the buffer is empty.

Note that for some collections, the removed element might still be held in memory. It will be removed eventually after other elements are added.

Sourceval clear : 'a t -> unit

clear b removes all values from the buffer b.

Sourceval fold : 'a t -> init:'b -> f:('b -> 'a -> 'b) -> 'b

fold b ~init ~f folds over the value of the buffer b, newest to oldest.

Sourceval fold_oldest_first : 'a t -> init:'b -> f:('b -> 'a -> 'b) -> 'b

fold_oldest_first b ~init ~f folds over the value of the buffer b, oldest to newest.

Sourceval elements : 'a t -> 'a list

elements b is a list that contains the same elements as the buffer b, oldest first, newest last.

Sourceval oldest_element : 'a t -> 'a option

oldest_element b returns the oldest inserted element from the buffer b if any.

Sourceval newest_element : 'a t -> 'a option

newest_element b returns the oldest inserted element from the buffer b if any.

OCaml

Innovation. Community. Security.