sig
type 'a extent
and interval = { start : int; length : int; }
val get_interval : 'a Assocext.extent -> Assocext.interval
val get_value : 'a Assocext.extent -> 'a
type 'a t
val create : int -> 'a Assocext.t
val get_length : 'a Assocext.t -> int
exception Illegal_range
val check : 'a Assocext.t -> int -> int -> bool
exception Extent_occupied
val reserve : 'a Assocext.t -> 'a -> int -> int -> 'a Assocext.extent
exception Extent_illegal
val free : 'a Assocext.extent -> 'a Assocext.t -> unit
val list_extents : 'a Assocext.t -> 'a Assocext.extent list
val list_free_intervals : 'a Assocext.t -> Assocext.interval list
exception Illegal_position
type 'a holder = Free of Assocext.interval | Reserved of 'a Assocext.extent
val get_pos_extent : 'a Assocext.t -> int -> 'a Assocext.holder
val change_length : 'a Assocext.extent -> 'a Assocext.t -> int -> unit
exception Out_of_bounds
exception Empty
val first : 'a Assocext.t -> 'a Assocext.extent
val last : 'a Assocext.t -> 'a Assocext.extent
val next_extent : 'a Assocext.extent -> 'a Assocext.extent
val prev_extent : 'a Assocext.extent -> 'a Assocext.extent
val iter : ('a Assocext.extent -> unit) -> 'a Assocext.t -> unit
end