Module Incremental__.State
type status
= Incremental__.Types.Status.t
=
|
Stabilizing
|
Running_on_update_handlers
|
Not_stabilizing
|
Stabilize_previously_raised of Incremental__.Raised_exn.t
val sexp_of_status : status -> Ppx_sexp_conv_lib.Sexp.t
module Node_update = Incremental__.On_update_handler.Node_update
module Run_on_update_handlers : sig ... end
module Only_in_debug : sig ... end
module Packed_weak_hashtbl : sig ... end
type t
= Incremental__.Types.State.t
=
{
mutable status : status;
bind_lhs_change_should_invalidate_rhs : bool;
mutable stabilization_num : Incremental__.Stabilization_num.t;
mutable current_scope : Incremental.Scope.t;
recompute_heap : Incremental__.Recompute_heap.t;
adjust_heights_heap : Incremental__.Adjust_heights_heap.t;
propagate_invalidity : Incremental__.Node.Packed.t Core_kernel.Stack.t;
mutable num_active_observers : int;
mutable all_observers : Incremental__.Internal_observer.Packed.t Incremental__.Import.Uopt.t;
finalized_observers : Incremental__.Internal_observer.Packed.t Thread_safe_queue.t;
new_observers : Incremental__.Internal_observer.Packed.t Core_kernel.Stack.t;
disallowed_observers : Incremental__.Internal_observer.Packed.t Core_kernel.Stack.t;
set_during_stabilization : Incremental.Var.Packed.t Core_kernel.Stack.t;
handle_after_stabilization : Incremental__.Node.Packed.t Core_kernel.Stack.t;
run_on_update_handlers : Run_on_update_handlers.t Core_kernel.Stack.t;
mutable only_in_debug : Only_in_debug.t;
weak_hashtbls : Packed_weak_hashtbl.t Thread_safe_queue.t;
mutable keep_node_creation_backtrace : bool;
mutable num_nodes_became_necessary : int;
mutable num_nodes_became_unnecessary : int;
mutable num_nodes_changed : int;
mutable num_nodes_created : int;
mutable num_nodes_invalidated : int;
mutable num_nodes_recomputed : int;
mutable num_nodes_recomputed_directly_because_one_child : int;
mutable num_nodes_recomputed_directly_because_min_height : int;
mutable num_var_sets : int;
}
val num_var_sets : t -> int
val set_num_var_sets : t -> int -> unit
val num_nodes_recomputed_directly_because_min_height : t -> int
val set_num_nodes_recomputed_directly_because_min_height : t -> int -> unit
val num_nodes_recomputed_directly_because_one_child : t -> int
val set_num_nodes_recomputed_directly_because_one_child : t -> int -> unit
val num_nodes_recomputed : t -> int
val set_num_nodes_recomputed : t -> int -> unit
val num_nodes_invalidated : t -> int
val set_num_nodes_invalidated : t -> int -> unit
val num_nodes_created : t -> int
val set_num_nodes_created : t -> int -> unit
val num_nodes_changed : t -> int
val set_num_nodes_changed : t -> int -> unit
val num_nodes_became_unnecessary : t -> int
val set_num_nodes_became_unnecessary : t -> int -> unit
val num_nodes_became_necessary : t -> int
val set_num_nodes_became_necessary : t -> int -> unit
val keep_node_creation_backtrace : t -> bool
val set_keep_node_creation_backtrace : t -> bool -> unit
val weak_hashtbls : t -> Packed_weak_hashtbl.t Thread_safe_queue.t
val only_in_debug : t -> Only_in_debug.t
val set_only_in_debug : t -> Only_in_debug.t -> unit
val run_on_update_handlers : t -> Run_on_update_handlers.t Core_kernel.Stack.t
val handle_after_stabilization : t -> Incremental__.Node.Packed.t Core_kernel.Stack.t
val set_during_stabilization : t -> Incremental.Var.Packed.t Core_kernel.Stack.t
val disallowed_observers : t -> Incremental__.Internal_observer.Packed.t Core_kernel.Stack.t
val new_observers : t -> Incremental__.Internal_observer.Packed.t Core_kernel.Stack.t
val finalized_observers : t -> Incremental__.Internal_observer.Packed.t Thread_safe_queue.t
val all_observers : t -> Incremental__.Internal_observer.Packed.t Incremental__.Import.Uopt.t
val set_all_observers : t -> Incremental__.Internal_observer.Packed.t Incremental__.Import.Uopt.t -> unit
val num_active_observers : t -> int
val set_num_active_observers : t -> int -> unit
val propagate_invalidity : t -> Incremental__.Node.Packed.t Core_kernel.Stack.t
val adjust_heights_heap : t -> Incremental__.Adjust_heights_heap.t
val recompute_heap : t -> Incremental__.Recompute_heap.t
val current_scope : t -> Incremental.Scope.t
val set_current_scope : t -> Incremental.Scope.t -> unit
val stabilization_num : t -> Incremental__.Stabilization_num.t
val set_stabilization_num : t -> Incremental__.Stabilization_num.t -> unit
val bind_lhs_change_should_invalidate_rhs : t -> bool
val status : t -> status
val set_status : t -> status -> unit
module Fields : sig ... end
val sexp_of_t : t -> Ppx_sexp_conv_lib.Sexp.t
module Clock : sig ... end
val now : Clock.t -> Incremental__.Import.Time_ns.t
val timing_wheel_length : Clock.t -> int
val num_stabilizes : t -> int
val max_height_allowed : t -> int
val max_height_seen : t -> int
val iter_observers : t -> f:(Incremental__.Internal_observer.Packed.t -> 'a) -> unit
val directly_observed : t -> Incremental__.Node.Packed.t list
val save_dot : t -> string -> unit
val iter_observer_descendants : t -> f:(Incremental__.Node.Packed.t -> unit) -> unit
module Stats : sig ... end
val stats : t -> Stats.t
val am_stabilizing : t -> bool
val invariant : t -> unit
val ensure_not_stabilizing : t -> name:string -> allow_in_update_handler:bool -> unit
val set_height : 'a Incremental__.Node.t -> int -> unit
val set_max_height_allowed : t -> int -> unit
val handle_after_stabilization : a. 'a Incremental__.Node.t -> unit
val remove_children : a. 'a Incremental__.Node.t -> unit
val remove_child : a b. child:'b Incremental__.Node.t -> parent:'a Incremental__.Node.t -> child_index:int -> unit
val check_if_unnecessary : a. 'a Incremental__.Node.t -> unit
val became_unnecessary : a. 'a Incremental__.Node.t -> unit
val remove_alarm : Clock.t -> Incremental__.Alarm_value.t Timing_wheel.Alarm.t -> unit
val invalidate_node : a. 'a Incremental__.Node.t -> unit
val invalidate_nodes_created_on_rhs : Incremental__Types.Node.Packed.t Incremental__.Import.Uopt.t -> unit
val rescope_nodes_created_on_rhs : 'a -> Incremental__.Node.Packed.t Incremental__.Import.Uopt.t -> new_scope:Incremental.Scope.t -> unit
val propagate_invalidity : t -> unit
val add_parent_without_adjusting_heights : a b. child:'a Incremental__.Node.t -> parent:'b Incremental__.Node.t -> child_index:int -> unit
val became_necessary : a. 'a Incremental__.Node.t -> unit
val became_necessary : 'a Incremental__.Node.t -> unit
val add_parent : child:'a Incremental__.Node.t -> parent:'b Incremental__.Node.t -> child_index:int -> unit
val run_with_scope : t -> Incremental.Scope.t -> f:(unit -> 'a) -> 'a
val within_scope : t -> Incremental.Scope.t -> f:(unit -> 'a) -> 'a
val change_child : a b. parent:'a Incremental__.Node.t -> old_child:'b Incremental__.Node.t Incremental__.Import.Uopt.t -> new_child:'b Incremental__.Node.t -> child_index:int -> unit
val add_alarm : Clock.t -> at:Incremental__.Import.Time_ns.t -> Incremental__.Alarm_value.t -> Incremental__.Alarm_value.t Timing_wheel.Alarm.t
val recompute : a. 'a Incremental__.Node.t -> unit
val copy_child : a. parent:'a Incremental__.Node.t -> child:'a Incremental__.Node.t -> unit
val maybe_change_value : a. 'a Incremental__.Node.t -> 'a -> unit
val recompute_everything_that_is_necessary : t -> unit
val unlink_disallowed_observers : t -> unit
val disallow_future_use : 'a Incremental__.Internal_observer.t -> unit
val disallow_finalized_observers : t -> unit
val observer_finalizer : t -> ('a Incremental__.Types.Internal_observer.t Core_kernel.ref -> unit) Core_kernel__.Import.Staged.t
val create_observer : ?should_finalize:bool -> 'a Incremental__.Node.t -> 'a Incremental__.Internal_observer.t Core_kernel.ref
val add_new_observers : t -> unit
val observer_value_exn : 'a Incremental.Observer.t -> 'a
val observer_value : 'a Incremental.Observer.t -> ('a, Core_kernel.Error.t) Core_kernel._result
val node_on_update : 'a Incremental__.Node.t -> f:('a Incremental__.On_update_handler.Node_update.t -> unit) -> unit
val observer_on_update_exn : 'a Incremental.Observer.t -> f:('a Incremental__.On_update_handler.Node_update.t -> unit) -> unit
val set_var_while_not_stabilizing : 'a Incremental.Var.t -> 'a -> unit
val set_var : 'a Incremental.Var.t -> 'a -> unit
val reclaim_space_in_weak_hashtbls : t -> unit
val stabilize : t -> unit
val create_node_in : t -> Incremental.Scope.t -> 'a Incremental__.Kind.t -> 'a Incremental__.Node.t
val create_node : t -> 'a Incremental__.Kind.t -> 'a Incremental__.Node.t
val create_node_top : t -> 'a Incremental__.Kind.t -> 'a Incremental__.Node.t
val create_var : t -> ?use_current_scope:bool -> 'a -> 'a Incremental.Var.t
val const : t -> 'a -> 'a Incremental__.Node.t
val map : 'a Incremental__.Node.t -> f:('a -> 'b) -> 'b Incremental__.Node.t
val map2 : 'a Incremental__.Node.t -> 'b Incremental__Types.Node.t -> f:('a -> 'b -> 'c) -> 'c Incremental__.Node.t
val map3 : 'a Incremental__.Node.t -> 'b Incremental__Types.Node.t -> 'c Incremental__Types.Node.t -> f:('a -> 'b -> 'c -> 'd) -> 'd Incremental__.Node.t
val map4 : 'a Incremental__.Node.t -> 'b Incremental__Types.Node.t -> 'c Incremental__Types.Node.t -> 'd Incremental__Types.Node.t -> f:('a -> 'b -> 'c -> 'd -> 'e) -> 'e Incremental__.Node.t
val map5 : 'a Incremental__.Node.t -> 'b Incremental__Types.Node.t -> 'c Incremental__Types.Node.t -> 'd Incremental__Types.Node.t -> 'e Incremental__Types.Node.t -> f:('a -> 'b -> 'c -> 'd -> 'e -> 'f) -> 'f Incremental__.Node.t
val map6 : 'a Incremental__.Node.t -> 'b Incremental__Types.Node.t -> 'c Incremental__Types.Node.t -> 'd Incremental__Types.Node.t -> 'e Incremental__Types.Node.t -> 'f Incremental__Types.Node.t -> f:('a -> 'b -> 'c -> 'd -> 'e -> 'f -> 'g) -> 'g Incremental__.Node.t
val map7 : 'a Incremental__.Node.t -> 'b Incremental__Types.Node.t -> 'c Incremental__Types.Node.t -> 'd Incremental__Types.Node.t -> 'e Incremental__Types.Node.t -> 'f Incremental__Types.Node.t -> 'g Incremental__Types.Node.t -> f:('a -> 'b -> 'c -> 'd -> 'e -> 'f -> 'g -> 'h) -> 'h Incremental__.Node.t
val map8 : 'a Incremental__.Node.t -> 'b Incremental__Types.Node.t -> 'c Incremental__Types.Node.t -> 'd Incremental__Types.Node.t -> 'e Incremental__Types.Node.t -> 'f Incremental__Types.Node.t -> 'g Incremental__Types.Node.t -> 'h Incremental__Types.Node.t -> f:('a -> 'b -> 'c -> 'd -> 'e -> 'f -> 'g -> 'h -> 'i) -> 'i Incremental__.Node.t
val map9 : 'a Incremental__.Node.t -> 'b Incremental__Types.Node.t -> 'c Incremental__Types.Node.t -> 'd Incremental__Types.Node.t -> 'e Incremental__Types.Node.t -> 'f Incremental__Types.Node.t -> 'g Incremental__Types.Node.t -> 'h Incremental__Types.Node.t -> 'i Incremental__Types.Node.t -> f:('a -> 'b -> 'c -> 'd -> 'e -> 'f -> 'g -> 'h -> 'i -> 'j) -> 'j Incremental__.Node.t
val map10 : 'a Incremental__.Node.t -> 'b Incremental__Types.Node.t -> 'c Incremental__Types.Node.t -> 'd Incremental__Types.Node.t -> 'e Incremental__Types.Node.t -> 'f Incremental__Types.Node.t -> 'g Incremental__Types.Node.t -> 'h Incremental__Types.Node.t -> 'i Incremental__Types.Node.t -> 'j Incremental__Types.Node.t -> f:('a -> 'b -> 'c -> 'd -> 'e -> 'f -> 'g -> 'h -> 'i -> 'j -> 'k) -> 'k Incremental__.Node.t
val map11 : 'a Incremental__.Node.t -> 'b Incremental__Types.Node.t -> 'c Incremental__Types.Node.t -> 'd Incremental__Types.Node.t -> 'e Incremental__Types.Node.t -> 'f Incremental__Types.Node.t -> 'g Incremental__Types.Node.t -> 'h Incremental__Types.Node.t -> 'i Incremental__Types.Node.t -> 'j Incremental__Types.Node.t -> 'k Incremental__Types.Node.t -> f:('a -> 'b -> 'c -> 'd -> 'e -> 'f -> 'g -> 'h -> 'i -> 'j -> 'k -> 'l) -> 'l Incremental__.Node.t
val map12 : 'a Incremental__.Node.t -> 'b Incremental__Types.Node.t -> 'c Incremental__Types.Node.t -> 'd Incremental__Types.Node.t -> 'e Incremental__Types.Node.t -> 'f Incremental__Types.Node.t -> 'g Incremental__Types.Node.t -> 'h Incremental__Types.Node.t -> 'i Incremental__Types.Node.t -> 'j Incremental__Types.Node.t -> 'k Incremental__Types.Node.t -> 'l Incremental__Types.Node.t -> f:('a -> 'b -> 'c -> 'd -> 'e -> 'f -> 'g -> 'h -> 'i -> 'j -> 'k -> 'l -> 'm) -> 'm Incremental__.Node.t
val map13 : 'a Incremental__.Node.t -> 'b Incremental__Types.Node.t -> 'c Incremental__Types.Node.t -> 'd Incremental__Types.Node.t -> 'e Incremental__Types.Node.t -> 'f Incremental__Types.Node.t -> 'g Incremental__Types.Node.t -> 'h Incremental__Types.Node.t -> 'i Incremental__Types.Node.t -> 'j Incremental__Types.Node.t -> 'k Incremental__Types.Node.t -> 'l Incremental__Types.Node.t -> 'm Incremental__Types.Node.t -> f:('a -> 'b -> 'c -> 'd -> 'e -> 'f -> 'g -> 'h -> 'i -> 'j -> 'k -> 'l -> 'm -> 'n) -> 'n Incremental__.Node.t
val map14 : 'a Incremental__.Node.t -> 'b Incremental__Types.Node.t -> 'c Incremental__Types.Node.t -> 'd Incremental__Types.Node.t -> 'e Incremental__Types.Node.t -> 'f Incremental__Types.Node.t -> 'g Incremental__Types.Node.t -> 'h Incremental__Types.Node.t -> 'i Incremental__Types.Node.t -> 'j Incremental__Types.Node.t -> 'k Incremental__Types.Node.t -> 'l Incremental__Types.Node.t -> 'm Incremental__Types.Node.t -> 'n Incremental__Types.Node.t -> f:('a -> 'b -> 'c -> 'd -> 'e -> 'f -> 'g -> 'h -> 'i -> 'j -> 'k -> 'l -> 'm -> 'n -> 'o) -> 'o Incremental__.Node.t
val map15 : 'a Incremental__.Node.t -> 'b Incremental__Types.Node.t -> 'c Incremental__Types.Node.t -> 'd Incremental__Types.Node.t -> 'e Incremental__Types.Node.t -> 'f Incremental__Types.Node.t -> 'g Incremental__Types.Node.t -> 'h Incremental__Types.Node.t -> 'i Incremental__Types.Node.t -> 'j Incremental__Types.Node.t -> 'k Incremental__Types.Node.t -> 'l Incremental__Types.Node.t -> 'm Incremental__Types.Node.t -> 'n Incremental__Types.Node.t -> 'o Incremental__Types.Node.t -> f:('a -> 'b -> 'c -> 'd -> 'e -> 'f -> 'g -> 'h -> 'i -> 'j -> 'k -> 'l -> 'm -> 'n -> 'o -> 'p) -> 'p Incremental__.Node.t
val preserve_cutoff : input:'a Incremental__.Node.t -> output:'b Incremental__.Node.t -> unit
val depend_on : 'a Incremental__.Node.t -> depend_on:'b Incremental__Types.Node.t -> 'a Incremental__.Node.t
val necessary_if_alive : 'a Incremental__.Node.t -> 'a Incremental__.Node.t
val bind : 'a Incremental__.Node.t -> f:('a -> 'b Incremental__Types.Node.t) -> 'b Incremental__.Node.t
val bind2 : 'a Incremental__.Node.t -> 'b Incremental__Types.Node.t -> f:('a -> 'b -> 'c Incremental__Types.Node.t) -> 'c Incremental__.Node.t
val bind3 : 'a Incremental__.Node.t -> 'b Incremental__Types.Node.t -> 'c Incremental__Types.Node.t -> f:('a -> 'b -> 'c -> 'd Incremental__Types.Node.t) -> 'd Incremental__.Node.t
val bind4 : 'a Incremental__.Node.t -> 'b Incremental__Types.Node.t -> 'c Incremental__Types.Node.t -> 'd Incremental__Types.Node.t -> f:('a -> 'b -> 'c -> 'd -> 'e Incremental__Types.Node.t) -> 'e Incremental__.Node.t
val join : 'a Incremental__Types.Node.t Incremental__.Node.t -> 'a Incremental__.Node.t
val if_ : bool Incremental__.Node.t -> then_:'a Incremental__Types.Node.t -> else_:'a Incremental__Types.Node.t -> 'a Incremental__.Node.t
val lazy_from_fun : t -> f:(unit -> 'a) -> 'a Core_kernel.Lazy.t
val default_hash_table_initial_size : int
val memoize_fun_by_key : ?initial_size:int -> t -> 'a Base__.Hashtbl_intf.Key.t -> ('b -> 'a Core_kernel.Hashtbl.key) -> ('b -> 'c) -> ('b -> 'c) Core_kernel__.Import.Staged.t
val array_fold : t -> 'a Incremental__Types.Node.t Incremental__.Import.Array.t -> init:'b -> f:('b -> 'a -> 'b) -> 'b Incremental__.Node.t
val all : t -> 'a Incremental__Types.Node.t list -> 'a list Incremental__.Node.t
module Unordered_array_fold_update = Incremental__.Unordered_array_fold.Update
val unordered_array_fold : t -> ?full_compute_every_n_changes:Core_kernel.Int.t -> 'a Incremental__.Types.Node.t Incremental__.Import.Array.t -> init:'b -> f:('b -> 'a -> 'b) -> update:('a, 'b) Incremental__.Unordered_array_fold.Update.t -> 'b Incremental__.Node.t
val opt_unordered_array_fold : t -> ?full_compute_every_n_changes:Core_kernel.Int.t -> 'a option Incremental__.Types.Node.t Incremental__.Import.Array.t -> init:'b -> f:('b -> 'a -> 'b) -> f_inverse:('b -> 'a -> 'b) -> 'b option Incremental__.Node.t
val at_least_k_of : t -> bool Incremental__.Types.Node.t Incremental__.Import.Array.t -> k:Core_kernel__Int.t -> bool Incremental__.Node.t
val exists : t -> bool Incremental__.Types.Node.t Incremental__.Import.Array.t -> bool Incremental__.Node.t
val for_all : t -> bool Incremental__.Types.Node.t Incremental__.Import.Array.t -> bool Incremental__.Node.t
val sum : t -> ?full_compute_every_n_changes:Core_kernel.Int.t -> 'a Incremental__.Types.Node.t Incremental__.Import.Array.t -> zero:'b -> add:('b -> 'a -> 'b) -> sub:('b -> 'a -> 'b) -> 'b Incremental__.Node.t
val opt_sum : t -> ?full_compute_every_n_changes:Core_kernel.Int.t -> 'a option Incremental__.Types.Node.t Incremental__.Import.Array.t -> zero:'b -> add:('b -> 'a -> 'b) -> sub:('b -> 'a -> 'b) -> 'b option Incremental__.Node.t
val sum_int : t -> int Incremental__.Types.Node.t Incremental__.Import.Array.t -> int Incremental__.Node.t
val sum_float : t -> float Incremental__.Types.Node.t Incremental__.Import.Array.t -> float Incremental__.Node.t
val set_freeze : 'a Incremental__.Node.t -> child:'a Incremental__.Node.t -> only_freeze_when:('a -> bool) -> unit
val freeze : 'a Incremental__.Node.t -> only_freeze_when:('a -> bool) -> 'a Incremental__.Node.t
val at : Clock.t -> Incremental__.Import.Time_ns.t -> Incremental.Before_or_after.t Incremental__.Node.t
val after : Clock.t -> Incremental__.Import.Time_ns.Span.t -> Incremental.Before_or_after.t Incremental__.Node.t
val next_interval_alarm_strict : Clock.t -> base:Incremental__.Import.Time_ns.t -> interval:Incremental__.Import.Time_ns.Span.t -> Incremental__.Import.Time_ns.t
val at_intervals : Clock.t -> Incremental__.Import.Time_ns.Span.t -> unit Incremental__.Node.t
val snapshot : Clock.t -> 'a Incremental__.Node.t -> at:Incremental__.Import.Time_ns.t -> before:'a -> 'a Incremental__.Node.t Core_kernel.Or_error.t
val incremental_step_function : Clock.t -> 'a Incremental__.Import.Step_function.t Incremental__Types.Node.t -> 'a Incremental__.Node.t
val make_stale : 'a Incremental__.Node.t -> unit
val advance_clock : Clock.t -> to_:Incremental__.Import.Time_ns.t -> unit
val create_clock : t -> timing_wheel_config:Timing_wheel.Config.t -> start:Core_kernel.Time_ns.t -> Clock.t
val create : (module Incremental.Config.Incremental_config) -> max_height_allowed:int -> t
val weak_memoize_fun_by_key : ?initial_size:int -> t -> (module Weak_hashtbl__.Import.Hashtbl.Key_plain with type t = 'a) -> ('b -> 'a) -> ('b -> 'c Weak_hashtbl__.Import.Heap_block.t) -> ('b -> 'c Weak_hashtbl__.Import.Heap_block.t) Core_kernel__.Import.Staged.t
module Expert : sig ... end