Module Base.Uniform_array
Same semantics as 'a Array.t, except it's guaranteed that the representation array is not tagged with Double_array_tag, the tag for float arrays.
This means it's safer to use in the presence of Obj.magic, but it's slower than normal Array if you use it with floats.
It can often be faster than Array if you use it with non-floats.
include Sexpable.S1 with type 'a t := 'a t
val t_of_sexp : (Sexplib0.Sexp.t -> 'a) -> Sexplib0.Sexp.t -> 'a tval sexp_of_t : ('a -> Sexplib0.Sexp.t) -> 'a t -> Sexplib0.Sexp.t
val invariant : _ t -> unitval empty : _ tval create : len:int -> 'a -> 'a tval singleton : 'a -> 'a tval init : int -> f:(int -> 'a) -> 'a tval length : 'a t -> intval get : 'a t -> int -> 'aval unsafe_get : 'a t -> int -> 'aval set : 'a t -> int -> 'a -> unitval unsafe_set : 'a t -> int -> 'a -> unitval swap : _ t -> int -> int -> unitval unsafe_set_omit_phys_equal_check : 'a t -> int -> 'a -> unitunsafe_set_omit_phys_equal_checkis likeunsafe_set, except it doesn't do aphys_equalcheck to try to skipcaml_modify. It is safe to call this even if the values arephys_equal.
val map : 'a t -> f:('a -> 'b) -> 'b tval iter : 'a t -> f:('a -> unit) -> unitval iteri : 'a t -> f:(int -> 'a -> unit) -> unitLike
iter, but the function is applied to the index of the element as first argument, and the element itself as second argument.
val of_array : 'a array -> 'a tof_arrayandto_arrayreturn fresh arrays with the same contents rather than returning a reference to the underlying array.
include Blit.S1 with type 'a t := 'a t
val blit : ('a t, 'a t) Base__.Blit_intf.blitval blito : ('a t, 'a t) Base__.Blit_intf.blitoval unsafe_blit : ('a t, 'a t) Base__.Blit_intf.blitval sub : ('a t, 'a t) Base__.Blit_intf.subval subo : ('a t, 'a t) Base__.Blit_intf.subo
Extra lowlevel and unsafe functions
val unsafe_create_uninitialized : len:int -> _ tThe behavior is undefined if you access an element before setting it.
val create_obj_array : len:int -> Base__.Import.Caml.Obj.t tNew obj array filled with
Obj.repr 0
val unsafe_set_assuming_currently_int : Base__.Import.Caml.Obj.t t -> int -> Base__.Import.Caml.Obj.t -> unitunsafe_set_assuming_currently_int t i objsets indexiofttoobj, but only works correctly if the value there is an immediate, i.e.Caml.Obj.is_int (get t i). This precondition saves a dynamic check.unsafe_set_int_assuming_currently_intis similar, except the value being set is an int.unsafe_set_intis similar but does not assume anything about the target.
val unsafe_set_int_assuming_currently_int : Base__.Import.Caml.Obj.t t -> int -> int -> unitval unsafe_set_int : Base__.Import.Caml.Obj.t t -> int -> int -> unitval unsafe_clear_if_pointer : Base__.Import.Caml.Obj.t t -> int -> unitunsafe_clear_if_pointer t ipreventst.(i)from pointing to anything to prevent space leaks. It does this by settingt.(i)toCaml.Obj.repr 0. As a performance hack, it only does this whennot (Caml.Obj.is_int t.(i)). It is an error to access the cleared index before setting it again.
val exists : 'a t -> f:('a -> bool) -> boolAs
Array.exists.