package diffast-core

  1. Overview
  2. Docs
module BID = B.ID
val nugsps : unit -> < gindex : Diffast_core.Misc.GI.t ; uid : Diffast_core.Misc.UID.t.. > list -> string
type node_t = Spec.node_t
type tree_t = Spec.tree_t
include module type of struct include Edit_base end
val fprintf : out_channel -> ('a, out_channel, unit) format -> 'a
val del_bg : string
val del_fg : string
val ins_bg : string
val ins_fg : string
val mov_bg : string
val mov_fg : string
val rel_bg : string
val rel_fg : string
val movrel_bg : string
val movrel_fg : string
type line_match = Edit_base.line_match =
  1. | LM_single of int * int
  2. | LM_multi of int * int * int
val get_label : < children : < data : < is_named : bool ; label : string.. >.. > array ; data : < is_named : bool ; label : string.. >.. > -> string
val _same_digest : < get_digest : < data : < _digest : 'b option ; eq : < _digest : 'b option.. > as 'c -> bool.. > ; initial_nchildren : int.. > as 'a -> 'b.. > -> < get_digest : < data : 'c ; initial_nchildren : int.. > as 'd -> 'b.. > -> ?leaf_comparison:bool -> ?digest_for_leaf:bool -> ?digest_for_all:bool -> 'a -> 'd -> bool
val tbl_add : ('a, 'b list) Hashtbl.t -> 'a -> 'b -> unit
val tbl_add_s : ('a, 'b Xset.t) Hashtbl.t -> 'a -> 'b -> unit
type segment = int * int
val sort_segments : segment list -> segment list
val segments_to_string : segment list -> string
val merge_segments : segment list list -> (int * int) list
include module type of struct include Editop end
val sprintf : ('a, unit, string) format -> 'a
type move_id = Moveid.t
type move_kind = Editop.move_kind =
  1. | Mnormal
  2. | Mpermutation
  3. | Modd
val move_id_to_string : Moveid.t -> string
val move_kind_to_string : move_kind -> string
type 'node_t t = 'node_t Editop.t =
  1. | Delete of bool * 'node_t Info.t * 'node_t Info.t list ref
  2. | Insert of bool * 'node_t Info.t * 'node_t Info.t list ref
  3. | Relabel of bool ref * 'node_t Info.t * 'node_t Info.t list ref * 'node_t Info.t * 'node_t Info.t list ref
  4. | Move of move_id ref * move_kind ref * 'node_t Info.t * 'node_t Info.t list ref * 'node_t Info.t * 'node_t Info.t list ref
type tag = Editop.tag =
  1. | Tdel
  2. | Tins
  3. | Trel
  4. | Tmov
val tag_to_string : tag -> string
val hash : < uid : UID.t.. > t -> tag * UID.t * UID.t
val to_string : < data : < gid : Diffast_core.Info.GI.t ; label : string.. > ; gindex : Diffast_core.Info.GI.t ; initial_pos : int ; is_collapsed : bool ; uid : Diffast_core.Info.UID.t.. > t -> string
val to_string_gid : < data : < gid : Diffast_core.Info.GI.t ; label : string.. > ; gindex : Diffast_core.Info.GI.t ; initial_pos : int ; is_collapsed : bool.. > t -> string
val is_whole : < is_collapsed : 'a.. > -> 'a
val make_delete : < data : < src_loc : Diffast_core.Info.Loc.t.. > ; is_collapsed : bool.. > as 'a -> 'a t
val make_insert : < data : < src_loc : Diffast_core.Info.Loc.t.. > ; is_collapsed : bool.. > as 'a -> 'a t
val make_relabel : < data : < src_loc : Diffast_core.Info.Loc.t.. >.. > as 'a -> 'a -> 'a t
val _make_move : move_id -> move_kind -> 'a Info.t -> 'a Info.t -> 'a t
val make_move : move_id -> 'a Info.t -> 'a Info.t -> 'a t
val make_move_permutation : move_id -> 'a Info.t -> 'a Info.t -> 'a t
val make_move_odd : move_id -> 'a Info.t -> 'a Info.t -> 'a t
val ups : unit -> Diffast_core.Misc.UID.t -> string
val nps : unit -> < data : < get_category : string ; get_name : string ; get_value : string ; src_loc : Diffast_core.Misc.Loc.t.. > ; uid : Diffast_core.Misc.UID.t.. > -> string
val gps : unit -> Diffast_core.Misc.GI.t -> string
val nups : unit -> < uid : Diffast_core.Misc.UID.t.. > -> string
val ngps : unit -> < gindex : Diffast_core.Misc.GI.t.. > -> string
val nugps : unit -> < gindex : Diffast_core.Misc.GI.t ; uid : Diffast_core.Misc.UID.t.. > -> string
val usps : unit -> Diffast_core.Misc.UID.t list -> string
val nsps : unit -> < uid : Diffast_core.Misc.UID.t.. > list -> string
val naps : unit -> < uid : Diffast_core.Misc.UID.t.. > array -> string
val locps : unit -> < data : < src_loc : Diffast_core.Misc.Loc.t.. >.. > -> string
val labps : unit -> < data : < get_category : string ; get_name : string ; get_value : string.. >.. > -> string
val get_stmt : < initial_parent : < data : < is_statement : bool.. > ; initial_parent : 'a.. > as 'a.. > -> 'a
val get_bn : < initial_parent : < data : < is_boundary : bool.. > ; initial_parent : 'a.. > as 'a.. > -> 'a
val boundary_stable : (Diffast_misc.UID.t -> Diffast_misc.UID.t) -> (Diffast_misc.UID.t -> Diffast_misc.UID.t -> bool) -> < _replace_children : ?initial:bool -> (int * Spec.node_data_t Diffast_core.Spec.SB.Otree.node2 array) list -> unit ; _set_is_collapsed : bool -> unit ; add_child : int -> Spec.node_data_t Diffast_core.Spec.SB.Otree.node2 -> unit ; add_child_leftmost : Spec.node_data_t Diffast_core.Spec.SB.Otree.node2 -> unit ; add_child_rightmost : Spec.node_data_t Diffast_core.Spec.SB.Otree.node2 -> unit ; add_children_leftmost : Spec.node_data_t Diffast_core.Spec.SB.Otree.node2 array -> unit ; add_children_rightmost : Spec.node_data_t Diffast_core.Spec.SB.Otree.node2 array -> unit ; add_substance : Spec.node_data_t Diffast_core.Spec.SB.Otree.node2 -> unit ; apath : Diffast_misc.Path.t ; begin_mutation : unit -> unit ; children : Spec.node_data_t Diffast_core.Spec.SB.Otree.node2 array ; children_indexes : int list ; children_uids : Diffast_misc.UID.t list ; clear_collapsible : unit ; clear_in_path : unit ; collapse : int -> Diffast_misc.Xhash.t -> unit ; collapse_locked : bool ; collapse_not_locked : bool ; collapsible : bool ; data : Spec.node_data_t ; decide_collapsible_or_not : unit ; del_leftmost_child : unit -> unit ; del_rightmost_child : unit -> unit ; end_mutation : ?overwrite:bool -> unit -> unit ; expand : unit ; get_substances : Spec.node_data_t Diffast_core.Spec.SB.Otree.node2 list ; gindex : Diffast_core.Spec.SB.Otree.GI.t ; has_hidden_parent : bool ; has_initial_parent : bool ; has_later_mutation : bool ; has_parent : bool ; hash : int ; hidden_children : Spec.node_data_t Diffast_core.Spec.SB.Otree.node2 array ; hidden_parent : Spec.node_data_t Diffast_core.Spec.SB.Otree.node2 ; hide_parent : unit ; in_path : bool ; index : int ; init_mutation : unit -> unit ; initial_ancestor_nodes : Spec.node_data_t Diffast_core.Spec.SB.Otree.node2 list ; initial_children : Spec.node_data_t Diffast_core.Spec.SB.Otree.node2 array ; initial_children_uids : Diffast_misc.UID.t list ; initial_nchildren : int ; initial_parent : 'b ; initial_pos : int ; initial_to_string : string ; insert_path : Spec.node_data_t Diffast_core.Spec.SB.Otree.node2 list -> unit ; is_collapsed : bool ; is_contracted : bool ; is_leaf : bool ; is_valid : bool ; iter_initial_ancestor_nodes : (Spec.node_data_t Diffast_core.Spec.SB.Otree.node2 -> unit) -> unit ; lock_collapse : unit ; nchildren : int ; nth_child : int -> Spec.node_data_t Diffast_core.Spec.SB.Otree.node2 ; parent : Spec.node_data_t Diffast_core.Spec.SB.Otree.node2 ; parent_edge : Spec.node_data_t Diffast_core.Spec.SB.Otree.node2 option ; path : Spec.node_data_t Diffast_core.Spec.SB.Otree.node2 Diffast_core.Spec.SB.Otree.path ; pos : int ; preorder_index : int ; print : unit ; prune : unit ; prune_all_children : unit ; prune_children : int list -> unit ; prune_initial_children : int list -> unit ; prune_nth_child : int -> unit ; replace_children : (int * Spec.node_data_t Diffast_core.Spec.SB.Otree.node2 array) list -> unit ; replace_nth_child : int -> Spec.node_data_t Diffast_core.Spec.SB.Otree.node2 array -> unit ; set_apath : Diffast_misc.Path.t -> unit ; set_children : Spec.node_data_t Diffast_core.Spec.SB.Otree.node2 array -> unit ; set_collapsible : unit ; set_data : Spec.node_data_t -> unit ; set_digest : Diffast_misc.Xhash.t -> unit ; set_gindex : Diffast_core.Spec.SB.Otree.GI.t -> unit ; set_hidden_children : Spec.node_data_t Diffast_core.Spec.SB.Otree.node2 array -> unit ; set_in_path : unit ; set_index : int -> unit ; set_initial_children : Spec.node_data_t Diffast_core.Spec.SB.Otree.node2 array -> unit ; set_initial_parent : Spec.node_data_t Diffast_core.Spec.SB.Otree.node2 -> unit ; set_initial_pos : int -> unit ; set_parent : Spec.node_data_t Diffast_core.Spec.SB.Otree.node2 -> unit ; set_parent_edge : Spec.node_data_t Diffast_core.Spec.SB.Otree.node2 option -> unit ; set_path : Spec.node_data_t Diffast_core.Spec.SB.Otree.node2 list -> unit ; set_pos : int -> unit ; set_preorder_index : int -> unit ; to_dot : ?mklab:(Spec.node_data_t Diffast_core.Spec.SB.Otree.node2 -> string) -> unit -> string ; to_dot_str : ?mklab:(Spec.node_data_t Diffast_core.Spec.SB.Otree.node2 -> string) -> unit -> string ; to_dot_str_ini : ?mklab:(Spec.node_data_t Diffast_core.Spec.SB.Otree.node2 -> string) -> unit -> string ; to_qualified_string : string ; to_rep : string ; to_string : string ; uid : Diffast_misc.UID.t ; unhide_parent : unit ; unlock_collapse : unit ; v_delete_child : int -> unit ; v_delete_children : int list -> unit ; v_insert_child : ?later:bool -> ?offset:float -> int -> Spec.node_data_t Diffast_core.Spec.SB.Otree.node2 -> unit ; v_insert_children : ?later:bool -> ?offset:float -> int -> Spec.node_data_t Diffast_core.Spec.SB.Otree.node2 list -> unit ; v_update_child : int -> Spec.node_data_t Diffast_core.Spec.SB.Otree.node2 -> unit ; v_update_children : int -> Spec.node_data_t Diffast_core.Spec.SB.Otree.node2 list -> unit > as 'a -> 'c -> bool
val get_mid : 'a t -> move_id
val add : < data : < gid : Diffast_core.Info.GI.t ; label : string.. > ; gindex : Diffast_core.Info.GI.t ; initial_pos : int ; is_collapsed : bool ; uid : Diffast_core.Info.UID.t.. > as 'a t Nodetbl.t -> Nodetbl.key -> 'a t -> unit
val add2 : < data : < gid : Diffast_core.Info.GI.t ; label : string.. > ; gindex : Diffast_core.Info.GI.t ; initial_pos : int ; is_collapsed : bool ; uid : Diffast_core.Info.UID.t.. > as 'a t Nodetbl.t -> 'a t Nodetbl.t -> Nodetbl.key -> Nodetbl.key -> 'a t -> unit
val gid_of_edit1 : < data : < gid : Diffast_core.Info.GI.t.. > ; gindex : Diffast_core.Info.GI.t.. > t -> Diffast_core.Info.GI.t
val gid_of_edit2 : < data : < gid : Diffast_core.Info.GI.t.. > ; gindex : Diffast_core.Info.GI.t.. > t -> Diffast_core.Info.GI.t
val comp_edits_topdown : ('a t -> 'b) -> 'a t -> 'a t -> int
val _sort_edit_list_topdown : ('a t -> 'b) -> 'a t list -> 'a t list
val sort_edit_list_topdown : < data : < gid : Diffast_core.Info.GI.t.. > ; gindex : Diffast_core.Info.GI.t.. > as 'a t list -> 'a t list
val comp_edits_bottomup : 'a -> < data : < gid : Diffast_core.Info.GI.t.. > ; gindex : Diffast_core.Info.GI.t.. > t -> < data : < gid : Diffast_core.Info.GI.t.. > ; gindex : Diffast_core.Info.GI.t.. > t -> int
val _sort_edit_list_bottomup : 'a -> < data : < gid : Diffast_core.Info.GI.t.. > ; gindex : Diffast_core.Info.GI.t.. > as 'b t list -> 'b t list
val sort_edit_list_bottomup : < data : < gid : Diffast_core.Info.GI.t.. > ; gindex : Diffast_core.Info.GI.t.. > as 'a t list -> 'a t list
val sort_mids_movs : ('a t -> 'a t -> int) -> 'a t list -> 'a t list
val sort_move_list_topdown : < data : < gid : Diffast_core.Info.GI.t.. > ; gindex : Diffast_core.Info.GI.t.. > as 'a t list -> 'a t list
val sort_move_list_bottomup : < data : < gid : Diffast_core.Info.GI.t.. > ; gindex : Diffast_core.Info.GI.t.. > as 'a t list -> 'a t list
val tbl_remove : 'a Nodetbl.t -> Nodetbl.key -> unit
exception Found
exception Abort
val is_ghost_node : < data : < src_loc : Loc.t.. >.. > -> bool
class formatters_base : delete:(int -> int -> segment list -> string) -> insert:(int -> int -> segment list -> string) -> relabel:(bool -> int -> int -> segment list -> int -> int -> segment list -> string) -> move:(int -> int -> segment list -> int -> int -> segment list -> string) -> align:(line_match -> string) -> ignored1:(segment -> string) -> ignored2:(segment -> string) -> misparsed1:(segment -> string) -> misparsed2:(segment -> string) -> object ... end
type move_region_tbl_t = (MID.t, GI.t * GI.t * GI.t * GI.t) Hashtbl.t
class [+'a, +'b] seq_base : < dump_size_threshold : int ; ignore_non_orig_relabel_flag : bool ; match_algo_threshold : int ; moveid_generator : < gen : MID.t.. > ; recover_orig_ast_flag : bool ; verbose_flag : bool ; viewer_flag : bool ; weak_eq_flag : bool.. > -> object ... end
exception Abort
class seq : < delta_compression : Diffast_misc.Compression.c ; dump_size_threshold : int ; fact_algo : Diffast_core.Triple.Xhash.algo ; fact_compression : Diffast_core.Triple.C.c ; fact_enc : Entity.encoding ; fact_for_delta_flag : bool ; fact_into_directory : string ; fact_into_virtuoso : string ; fact_proj : string ; fact_size_threshold : int ; fact_virtuoso_temp_dir : string ; ignore_move_of_unordered_flag : bool ; ignore_non_orig_relabel_flag : bool ; irreversible_flag : bool ; local_cache_name : string ; match_algo_threshold : int ; minimize_delta_flag : bool ; moveid_generator : < gen : MID.t.. > ; recover_orig_ast_flag : bool ; sort_unordered_flag : bool ; verbose_flag : bool ; viewer_flag : bool ; weak_eq_flag : bool.. > -> object ... end
val dump_changes : < fact_compression : Diffast_core.Triple.C.c ; fact_for_changes_flag : bool ; fact_into_directory : string ; fact_into_virtuoso : string ; fact_size_threshold : int ; fact_virtuoso_temp_dir : string ; local_cache_name : string ; verbose_flag : bool.. > as 'a -> < extract_change : 'a -> 'b -> 'c -> 'd -> 'e -> (string * int * string list) list * < data : < gid : Diffast_core.Info.GI.t ; label : string.. > ; gindex : Diffast_core.Info.GI.t ; initial_pos : int ; is_collapsed : bool ; uid : Diffast_core.Info.UID.t.. > t list * 'f * Triple.t Xset.t.. > -> 'b -> 'c -> 'd -> 'e -> 'g -> string -> unit
val remove_relabels_and_mapping : < add_bad_pair : < data : < src_loc : Diffast_core.Info.Loc.t.. > ; is_collapsed : bool.. > as 'a -> 'a -> unit ; tree1 : < scan_whole_initial_subtree : 'b -> ('a -> unit) -> 'c.. > ; tree2 : < scan_whole_initial_subtree : 'd -> ('a -> unit) -> 'e.. >.. > -> < add_edit : 'a Editop.t -> unit ; find12 : 'a -> 'a -> 'f list ; remove_edit : 'f -> unit.. > -> < find : 'a -> 'a ; remove : 'a -> 'a -> 'g.. > -> ('b * 'd * bool) list -> unit
val lock_mapping : < scan_whole_initial_subtree : < data : < _label : Obj.t.. >.. > as 'a -> ('b -> unit) -> 'c.. > -> < scan_whole_initial_subtree : < data : < _label : Obj.t.. >.. > as 'd -> ('b -> unit) -> 'e.. > -> < find : 'b -> 'b ; lock_node : ?key:Key.t -> 'b -> unit.. > -> 'a -> 'd -> unit
val generate_compatible_edits : < conflicting_pairs_threshold : int ; lock_matches_flag : bool ; mapped_neighbours_difference_threshold : float ; multi_node_match_flag : bool ; prematch_cands_threshold : int ; prematch_subtree_cands_threshold : int ; subtree_match_ratio_threshold : float ; use_adjacency_matches_flag : bool ; verbose_flag : bool.. > -> < _get_adjacency_score : ?anchor:(Node.node_t * Node.node_t) option -> Node.t -> Node.t -> float * (Node.t * Node.t) list ; get_adjacency_score : ?anchor:(Node.node_t * Node.node_t) option -> Node.t -> Node.t -> float ; tree1 : tree_t ; tree2 : tree_t.. > Node.cenv_t -> < add_unsettled : Spec.node_t -> Spec.node_t -> Spec.node_t option * Spec.node_t option ; has_mapping : Spec.node_t -> Spec.node_t -> bool ; lock_node : ?key:Key.t -> Spec.node_t -> unit.. > -> < add_edit : Spec.node_t Editop.t -> unit ; find1 : Spec.node_t -> Spec.node_t t list ; find12 : Spec.node_t -> Spec.node_t -> 'a list ; find2 : Spec.node_t -> Spec.node_t t list ; remove_edit : Spec.node_t t -> unit.. > -> (Spec.node_t * Spec.node_t) list -> (Spec.node_t -> Spec.node_t -> bool * 'b) -> int
val mkfilt : ('a -> 'b) -> ('b -> bool) -> 'a -> bool
val is_def : < data : < binding : B.t.. >.. > -> bool
val is_non_local_def : < data : < binding : B.t.. >.. > -> bool
val is_use : < data : < binding : B.t.. >.. > -> bool
val get_bid : < data : < binding : B.t.. >.. > -> B.ID.t
val get_bid_opt : < data : < binding : B.t.. >.. > -> B.ID.t option
val get_bid_name : < find_name_for_bid : 'a -> string.. > -> 'a -> string
val null_boundary_key : 'a option * 'b option
val is_mapped_boundary_key : < find : 'a -> 'b.. > -> ('a option * 'b option) -> bool
val is_uniq_child : < data : < get_ordinal : int -> 'a.. > ; initial_children : 'b array ; initial_nchildren : int.. > -> < initial_parent : < data : < get_ordinal : 'a -> 'a ; has_ordinal : bool.. >.. > ; initial_pos : 'a.. > -> bool
val has_uniq_path : < data : < get_ordinal : int -> 'b.. > ; initial_children : 'c array ; initial_nchildren : int ; initial_parent : < data : < get_ordinal : 'b -> 'b ; has_ordinal : bool.. >.. > ; initial_pos : 'b ; iter_initial_ancestor_nodes : ('a -> unit) -> 'd.. > as 'a -> 'a -> bool
val has_uniq_paths : < data : < get_ordinal : int -> 'b.. > ; initial_children : 'c array ; initial_nchildren : int ; initial_parent : < data : < get_ordinal : 'b -> 'b ; has_ordinal : bool.. >.. > ; initial_pos : 'b ; iter_initial_ancestor_nodes : ('a -> unit) -> 'd.. > as 'a -> < data : < get_ordinal : int -> 'f.. > ; initial_children : 'g array ; initial_nchildren : int ; initial_parent : < data : < get_ordinal : 'f -> 'f ; has_ordinal : bool.. >.. > ; initial_pos : 'f ; iter_initial_ancestor_nodes : ('e -> unit) -> 'h.. > as 'e -> 'a -> 'e -> bool
val collect_use_renames : ?filt: (< _replace_children : ?initial:bool -> (int * Spec.node_data_t Diffast_core.Spec.SB.Otree.node2 array) list -> unit ; _set_is_collapsed : bool -> unit ; add_child : int -> Spec.node_data_t Diffast_core.Spec.SB.Otree.node2 -> unit ; add_child_leftmost : Spec.node_data_t Diffast_core.Spec.SB.Otree.node2 -> unit ; add_child_rightmost : Spec.node_data_t Diffast_core.Spec.SB.Otree.node2 -> unit ; add_children_leftmost : Spec.node_data_t Diffast_core.Spec.SB.Otree.node2 array -> unit ; add_children_rightmost : Spec.node_data_t Diffast_core.Spec.SB.Otree.node2 array -> unit ; add_substance : Spec.node_data_t Diffast_core.Spec.SB.Otree.node2 -> unit ; apath : Diffast_misc.Path.t ; begin_mutation : unit -> unit ; children : Spec.node_data_t Diffast_core.Spec.SB.Otree.node2 array ; children_indexes : int list ; children_uids : Diffast_misc.UID.t list ; clear_collapsible : unit ; clear_in_path : unit ; collapse : int -> Diffast_misc.Xhash.t -> unit ; collapse_locked : bool ; collapse_not_locked : bool ; collapsible : bool ; data : Spec.node_data_t ; decide_collapsible_or_not : unit ; del_leftmost_child : unit -> unit ; del_rightmost_child : unit -> unit ; end_mutation : ?overwrite:bool -> unit -> unit ; expand : unit ; get_substances : Spec.node_data_t Diffast_core.Spec.SB.Otree.node2 list ; gindex : Diffast_core.Spec.SB.Otree.GI.t ; has_hidden_parent : bool ; has_initial_parent : bool ; has_later_mutation : bool ; has_parent : bool ; hash : int ; hidden_children : Spec.node_data_t Diffast_core.Spec.SB.Otree.node2 array ; hidden_parent : Spec.node_data_t Diffast_core.Spec.SB.Otree.node2 ; hide_parent : unit ; in_path : bool ; index : int ; init_mutation : unit -> unit ; initial_ancestor_nodes : Spec.node_data_t Diffast_core.Spec.SB.Otree.node2 list ; initial_children : Spec.node_data_t Diffast_core.Spec.SB.Otree.node2 array ; initial_children_uids : Diffast_misc.UID.t list ; initial_nchildren : int ; initial_parent : 'a ; initial_pos : int ; initial_to_string : string ; insert_path : Spec.node_data_t Diffast_core.Spec.SB.Otree.node2 list -> unit ; is_collapsed : bool ; is_contracted : bool ; is_leaf : bool ; is_valid : bool ; iter_initial_ancestor_nodes : (Spec.node_data_t Diffast_core.Spec.SB.Otree.node2 -> unit) -> unit ; lock_collapse : unit ; nchildren : int ; nth_child : int -> Spec.node_data_t Diffast_core.Spec.SB.Otree.node2 ; parent : Spec.node_data_t Diffast_core.Spec.SB.Otree.node2 ; parent_edge : Spec.node_data_t Diffast_core.Spec.SB.Otree.node2 option ; path : Spec.node_data_t Diffast_core.Spec.SB.Otree.node2 Diffast_core.Spec.SB.Otree.path ; pos : int ; preorder_index : int ; print : unit ; prune : unit ; prune_all_children : unit ; prune_children : int list -> unit ; prune_initial_children : int list -> unit ; prune_nth_child : int -> unit ; replace_children : (int * Spec.node_data_t Diffast_core.Spec.SB.Otree.node2 array) list -> unit ; replace_nth_child : int -> Spec.node_data_t Diffast_core.Spec.SB.Otree.node2 array -> unit ; set_apath : Diffast_misc.Path.t -> unit ; set_children : Spec.node_data_t Diffast_core.Spec.SB.Otree.node2 array -> unit ; set_collapsible : unit ; set_data : Spec.node_data_t -> unit ; set_digest : Diffast_misc.Xhash.t -> unit ; set_gindex : Diffast_core.Spec.SB.Otree.GI.t -> unit ; set_hidden_children : Spec.node_data_t Diffast_core.Spec.SB.Otree.node2 array -> unit ; set_in_path : unit ; set_index : int -> unit ; set_initial_children : Spec.node_data_t Diffast_core.Spec.SB.Otree.node2 array -> unit ; set_initial_parent : Spec.node_data_t Diffast_core.Spec.SB.Otree.node2 -> unit ; set_initial_pos : int -> unit ; set_parent : Spec.node_data_t Diffast_core.Spec.SB.Otree.node2 -> unit ; set_parent_edge : Spec.node_data_t Diffast_core.Spec.SB.Otree.node2 option -> unit ; set_path : Spec.node_data_t Diffast_core.Spec.SB.Otree.node2 list -> unit ; set_pos : int -> unit ; set_preorder_index : int -> unit ; to_dot : ?mklab:(Spec.node_data_t Diffast_core.Spec.SB.Otree.node2 -> string) -> unit -> string ; to_dot_str : ?mklab:(Spec.node_data_t Diffast_core.Spec.SB.Otree.node2 -> string) -> unit -> string ; to_dot_str_ini : ?mklab:(Spec.node_data_t Diffast_core.Spec.SB.Otree.node2 -> string) -> unit -> string ; to_qualified_string : string ; to_rep : string ; to_string : string ; uid : Diffast_misc.UID.t ; unhide_parent : unit ; unlock_collapse : unit ; v_delete_child : int -> unit ; v_delete_children : int list -> unit ; v_insert_child : ?later:bool -> ?offset:float -> int -> Spec.node_data_t Diffast_core.Spec.SB.Otree.node2 -> unit ; v_insert_children : ?later:bool -> ?offset:float -> int -> Spec.node_data_t Diffast_core.Spec.SB.Otree.node2 list -> unit ; v_update_child : int -> Spec.node_data_t Diffast_core.Spec.SB.Otree.node2 -> unit ; v_update_children : int -> Spec.node_data_t Diffast_core.Spec.SB.Otree.node2 list -> unit > as 'a -> 'a -> bool) -> < add_rename_pat : (string * string) -> unit ; find_ancestor_pairs_of_same_category : bool -> 'a -> 'a -> ('c * 'd * < data : < eq : 'f -> bool.. >.. > as 'e * < data : 'f.. > as 'g * 'h * 'i) list ; get_boundary_key : 'a -> 'a -> 'j ; has_match1 : 'a -> bool ; has_match2 : 'a -> bool ; has_uniq_match : Spec.node_data_t Diffast_core.Spec.SB.Otree.node2 -> Spec.node_data_t Diffast_core.Spec.SB.Otree.node2 -> bool ; in_subtree_matches : Spec.node_data_t Diffast_core.Spec.SB.Otree.node2 -> Spec.node_data_t Diffast_core.Spec.SB.Otree.node2 -> bool ; multiple_subtree_matches : < find : Diffast_misc.Xhash.t -> (Spec.node_data_t Diffast_core.Spec.SB.Otree.node2 * 'k) list * (Spec.node_data_t Diffast_core.Spec.SB.Otree.node2 * 'l) list * 'm.. > ; tree1 : < is_initial_ancestor : 'a -> 'e -> bool ; search_node_by_uid : Diffast_misc.UID.t -> 'a.. > ; tree2 : < is_initial_ancestor : 'a -> 'g -> bool ; search_node_by_uid : Diffast_misc.UID.t -> 'a.. >.. > as 'b -> < find : 'a -> 'a ; inv_find : 'a -> 'a ; mem_cod : Spec.node_data_t Diffast_core.Spec.SB.Otree.node2 -> bool ; mem_dom : Spec.node_data_t Diffast_core.Spec.SB.Otree.node2 -> bool.. > -> < iter_relabels : ('a t -> unit) -> 'n.. > -> ('b -> 'a -> 'a -> BID.t -> BID.t -> bool) -> (BID.t * BID.t, int * string * string) Hashtbl.t * ('j, (BID.t, BID.t list) Hashtbl.t) Hashtbl.t * ('j, (BID.t, BID.t list) Hashtbl.t) Hashtbl.t * (string * string, int) Hashtbl.t * (string, string list) Hashtbl.t * (string, string list) Hashtbl.t
val rectify_renames_u : ?handle_weak:bool -> ?trust_moved_non_renames:bool -> < conflicting_pairs_threshold : int ; lock_matches_flag : bool ; mapped_neighbours_difference_threshold : float ; multi_node_match_flag : bool ; prematch_cands_threshold : int ; prematch_subtree_cands_threshold : int ; subtree_match_ratio_threshold : float ; use_adjacency_matches_flag : bool ; verbose_flag : bool.. > -> (node_t, tree_t) Comparison.c -> < add_starting_pair_for_glueing : (Spec.node_t * Spec.node_t) -> unit ; add_unsettled : Spec.node_t -> Spec.node_t -> Spec.node_t option * Spec.node_t option ; finalize_mapping : Spec.node_data_t Diffast_core.Spec.SB.Otree.node2 -> Spec.node_data_t Diffast_core.Spec.SB.Otree.node2 -> unit ; find : Spec.node_t -> Spec.node_t ; has_mapping : Spec.node_t -> Spec.node_t -> bool ; inv_find : Spec.node_data_t Diffast_core.Spec.SB.Otree.node2 -> Spec.node_data_t Diffast_core.Spec.SB.Otree.node2 ; iter : (Spec.node_data_t Diffast_core.Spec.SB.Otree.node2 -> Spec.node_data_t Diffast_core.Spec.SB.Otree.node2 -> unit) -> 'a ; lock_node : ?key:Key.t -> Spec.node_t -> unit ; mem_cod : Spec.node_data_t Diffast_core.Spec.SB.Otree.node2 -> bool ; mem_dom : Spec.node_data_t Diffast_core.Spec.SB.Otree.node2 -> bool ; remove : Diffast_core.Node_mapping.Nodetbl.key -> Diffast_core.Node_mapping.Nodetbl.key -> 'b.. > -> < add_edit : Spec.node_t Editop.t -> unit ; find1 : Spec.node_t -> Spec.node_t t list ; find12 : Spec.node_t -> Spec.node_t -> Spec.node_t t list ; find2 : Spec.node_t -> Spec.node_t t list ; iter_deletes : (node_t t -> unit) -> 'c ; iter_inserts : (node_t t -> unit) -> 'd ; iter_relabels : (Spec.node_data_t Diffast_core.Spec.SB.Otree.node2 t -> unit) -> 'e ; mem_mov12 : Spec.node_data_t Diffast_core.Spec.SB.Otree.node2 -> Spec.node_data_t Diffast_core.Spec.SB.Otree.node2 -> bool ; remove_edit : Spec.node_t t -> unit.. > -> (node_t -> bool) array -> bool
val rectify_renames_d : < conflicting_pairs_threshold : int ; lock_matches_flag : bool ; mapped_neighbours_difference_threshold : float ; multi_node_match_flag : bool ; prematch_cands_threshold : int ; prematch_subtree_cands_threshold : int ; rename_rectification_level : int ; subtree_match_ratio_threshold : float ; use_adjacency_matches_flag : bool ; verbose_flag : bool.. > -> (node_t, tree_t) Comparison.c -> < add_starting_pair_for_glueing : (Spec.node_t * Spec.node_t) -> unit ; add_unsettled : Spec.node_t -> Spec.node_t -> Spec.node_t option * Spec.node_t option ; find : Spec.node_data_t Diffast_core.Spec.SB.Otree.node2 -> Spec.node_data_t Diffast_core.Spec.SB.Otree.node2 ; has_mapping : Spec.node_t -> Spec.node_t -> bool ; inv_find : Nodetbl.key -> Nodetbl.key ; iter : (Nodetbl.key -> Nodetbl.key -> unit) -> 'a ; lock_node : ?key:Key.t -> Spec.node_t -> unit ; remove : Diffast_core.Node_mapping.Nodetbl.key -> Diffast_core.Node_mapping.Nodetbl.key -> 'b.. > -> < add_edit : Spec.node_t Editop.t -> unit ; find1 : Spec.node_t -> Spec.node_t t list ; find12 : Spec.node_t -> Spec.node_t -> Spec.node_t t list ; find2 : Spec.node_t -> Spec.node_t t list ; iter_deletes : (Nodetbl.key t -> unit) -> 'c ; iter_inserts : (Nodetbl.key t -> unit) -> 'd ; iter_moves : (Nodetbl.key t -> unit) -> 'e ; iter_relabels : (Nodetbl.key t -> unit) -> 'f ; mem12 : Nodetbl.key -> Nodetbl.key -> bool ; remove_edit : Spec.node_t t -> unit.. > -> unit
OCaml

Innovation. Community. Security.