aboutsummaryrefslogtreecommitdiff
path: root/clib/cArray.ml
diff options
context:
space:
mode:
Diffstat (limited to 'clib/cArray.ml')
-rw-r--r--clib/cArray.ml8
1 files changed, 8 insertions, 0 deletions
diff --git a/clib/cArray.ml b/clib/cArray.ml
index 7249bcada0..95ae48a7ba 100644
--- a/clib/cArray.ml
+++ b/clib/cArray.ml
@@ -56,6 +56,7 @@ sig
(int -> 'a -> 'b -> 'c -> 'd) -> 'a array -> 'b array -> 'c array -> 'd array
val map_left : ('a -> 'b) -> 'a array -> 'b array
val iter2_i : (int -> 'a -> 'b -> unit) -> 'a array -> 'b array -> unit
+ val iter3 : ('a -> 'b -> 'c -> unit) -> 'a array -> 'b array -> 'c array -> unit
val fold_left_map : ('a -> 'b -> 'a * 'c) -> 'a -> 'b array -> 'a * 'c array
val fold_right_map : ('a -> 'c -> 'b * 'c) -> 'a array -> 'c -> 'b array * 'c
val fold_left2_map : ('a -> 'b -> 'c -> 'a * 'd) -> 'a -> 'b array -> 'c array -> 'a * 'd array
@@ -392,6 +393,13 @@ let iter2_i f v1 v2 =
let () = if not (Int.equal len2 len1) then invalid_arg "Array.iter2" in
for i = 0 to len1 - 1 do f i (uget v1 i) (uget v2 i) done
+let iter3 f v1 v2 v3 =
+ let len1 = Array.length v1 in
+ let len2 = Array.length v2 in
+ let len3 = Array.length v3 in
+ let () = if not (Int.equal len2 len1) || not (Int.equal len1 len3) then invalid_arg "Array.iter3" in
+ for i = 0 to len1 - 1 do f (uget v1 i) (uget v2 i) (uget v3 i) done
+
let map_right f a =
let l = length a in
if l = 0 then [||] else begin