A module internal to Incremental. Users should see Incremental_intf.
An Expert.t is the only kind of node that can update its value and set of children
incrementally. The operations to change the set of children and to react to various
events (new value in a child etc) are exposed to the user.
include module type of sig ... endtype 'a edge = 'a Incremental_kernel__Types.Expert.edge = {child : 'a Incremental_kernel__Types.Node.t; |
on_change : 'a ‑> unit; |
mutable index : int Incremental_kernel__.Uopt.t; |
}type 'a t = 'a Incremental_kernel__Types.Expert.t = {f : unit ‑> 'a; |
on_observability_change : is_now_observable:bool ‑> unit; |
mutable children : packed_edge Incremental_kernel__.Uopt.t Incremental_kernel__.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 tval invariant : 'a Base__.Invariant_intf.inv ‑> 'a t Base__.Invariant_intf.invinclude Incremental_kernel__.Sexp_of.S1 with type a t := a tinclude sig ... endval sexp_of_t : ('a ‑> Sexplib.Sexp.t) ‑> 'a t ‑> Sexplib.Sexp.tval 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 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