CCVector.{top,top_exn}

This commit is contained in:
Simon Cruanes 2014-11-19 16:39:52 +01:00
parent af850a88c1
commit a47bd108ec
2 changed files with 22 additions and 0 deletions

View file

@ -215,6 +215,19 @@ let pop v =
try Some (pop_exn v) try Some (pop_exn v)
with Failure _ -> None with Failure _ -> None
let top v =
if v.size = 0 then None else Some v.vec.(v.size-1)
let top_exn v =
if v.size = 0 then failwith "Vector.top";
v.vec.(v.size-1)
(*$T
1 -- 10 |> top = Some 10
create () |> top = None
1 -- 10 |> top_exn = 10
*)
let copy v = { let copy v = {
size = v.size; size = v.size;
vec = Array.sub v.vec 0 v.size; vec = Array.sub v.vec 0 v.size;

View file

@ -99,6 +99,15 @@ val pop_exn : ('a, rw) t -> 'a
(** remove last element, or raise a Failure if empty (** remove last element, or raise a Failure if empty
@raise Failure on an empty vector *) @raise Failure on an empty vector *)
val top : ('a, _) t -> 'a option
(** Top element, if present
@since NEXT_RELEASE *)
val top_exn : ('a, _) t -> 'a
(** Top element, if present
@raise Failure on an empty vector
@since NEXT_RELEASE *)
val copy : ('a,_) t -> ('a,'mut) t val copy : ('a,_) t -> ('a,'mut) t
(** Shallow copy (may give an immutable or mutable vector) *) (** Shallow copy (may give an immutable or mutable vector) *)