diff --git a/lib/data/test_wheel.ml b/lib/data/test_wheel.ml index 37001da..7df4b8c 100644 --- a/lib/data/test_wheel.ml +++ b/lib/data/test_wheel.ml @@ -25,6 +25,11 @@ let%expect_test _ = Wheel.add wh 6 |> ignore; (* t=3 *) print_ints_nl (Wheel.tick wh); [%expect {| [] |}]; + + let every = ref [] in + Wheel.iter (fun x -> every := x :: !every) wh; + print_ints_nl (List.sort compare !every); [%expect {| [1;2;3;4;5;6] |}]; + (* t=0 *) print_ints_nl (Wheel.tick wh); [%expect {| [1;2;3] |}]; (* t=1 *) diff --git a/lib/data/wheel.ml b/lib/data/wheel.ml index 1352cfb..194e498 100644 --- a/lib/data/wheel.ml +++ b/lib/data/wheel.ml @@ -22,3 +22,8 @@ let[@tail_mod_cons] rec empty t = let tick t = t.index <- (t.index + 1) mod Array.length t.entries; empty t + +let iter f t = + for i = 0 to Array.length t.entries - 1 do + Dllist.iter_l f t.entries.(i) + done