Base.Ordered_collection_common
Functions for ordered collections.
val get_pos_len : ?pos:int -> ?len:int -> unit -> total_length:int -> (int * int) Or_error.t
get_pos_len
, get_pos_len_exn
, and check_pos_len_exn
are intended to be used by functions that take a sequence (array, string, bigstring, ...) and an optional pos
and len
specifying a subrange of the sequence. Such functions should call get_pos_len
with the length of the sequence and the optional pos
and len
, and it will return the pos
and len
specifying the range, where the default pos
is zero and the default len
is to go to the end of the sequence.
It should be the case that:
pos >= 0 && len >= 0 && pos + len <= total_length
Note that this allows pos = total_length
and len = 0
, i.e., an empty subrange at the end of the sequence.
get_pos_len
returns (pos', len')
specifying a subrange where:
pos' = match pos with None -> 0 | Some i -> i len' = match len with None -> total_length - pos' | Some i -> i
check_pos_len_exn ~pos ~len ~total_length
raises unless pos >= 0 && len >= 0 &&
pos + len <= total_length
.
module Private : sig ... end