Module Incremental__.Expert
include module type of sig ... end
type 'a edge= 'a Incremental__Types.Expert.edge={child : 'a Incremental__Types.Node.t;on_change : 'a -> unit;mutable index : int Incremental__.Import.Uopt.t;}type packed_edge= Incremental__Types.Expert.packed_edge=|E : 'a edge -> packed_edgetype 'a t= 'a Incremental__Types.Expert.t={f : unit -> 'a;on_observability_change : is_now_observable:bool -> unit;mutable children : packed_edge Incremental__.Import.Uopt.t Incremental__.Import.Array.t;mutable num_children : int;mutable force_stale : bool;mutable num_invalid_children : int;mutable will_fire_all_callbacks : bool;}
include Core_kernel.Invariant.S1 with type 'a t := 'a t
val invariant : 'a Base__.Invariant_intf.inv -> 'a t Base__.Invariant_intf.inv
include Incremental__.Sexp_of.S1 with type 'a t := 'a t
val sexp_of_t : ('a -> Ppx_sexp_conv_lib.Sexp.t) -> 'a t -> Ppx_sexp_conv_lib.Sexp.t
val sexp_of_edge : ('a -> Core_kernel.Sexp.t) -> 'a edge -> Core_kernel.Sexp.tval invariant_about_num_invalid_children : _ t -> is_necessary:bool -> unitval create : f:(unit -> 'a) -> on_observability_change:(is_now_observable:bool -> unit) -> 'a tval make_stale : _ t -> [ `Already_stale | `Ok ]val incr_invalid_children : _ t -> unitval decr_invalid_children : _ t -> unitval add_child_edge : _ t -> packed_edge -> intReturns the index of this new edge.
val swap_children : _ t -> child_index1:int -> child_index2:int -> unitval last_child_edge_exn : _ t -> packed_edgeval remove_last_child_edge_exn : _ t -> unitval before_main_computation : _ t -> [ `Invalid | `Ok ]val observability_change : _ t -> is_now_observable:bool -> unitval run_edge_callback : _ t -> child_index:int -> unit