module Make: functor (
Param
:
PARAM
) ->
sig
.. end
type
strid = int
type
node = {
|
mutable seqid : strid ; |
|
mutable start : int ; |
|
mutable final : int Pervasives.ref ; |
|
mutable parent : node ; |
|
v : node_value ; |
}
type
node_value =
type
node_internal = {
}
type
factor = node * string * node
type
t = {
|
mutable cpt : strid ; |
|
ht : (strid, string) Hashtbl.t ; |
|
mutable root : node ; |
}
val get0 : t -> strid -> string
val ext0 : node -> Suffix_tree.Ext.t
val maximal0 : node -> int
val locals0 : node -> Suffix_tree.Ext.t
val size : t -> strid
val is_root : t -> node * ('a * 'b * int) * 'c -> bool
val root : t -> node
val is_leaf : 'a -> node -> bool
val length : 'a -> node -> int
val label : t -> node -> string
val ext : 'a -> node -> strid Lset.t
val card : 'a -> node -> int
val is_maximal : 'a -> node -> bool
val children : 'a -> node -> node list
val parent : t -> node -> node option
val succ : t -> node -> node option
val preds : 'a -> node -> node Lset.t
val suffix : 'a -> node -> strid * int
val path : t -> node -> string
val height : t -> node -> int
val set_visible : 'a -> node -> int * int -> unit
val get_visible : 'a -> node -> int * int
val reduce : t ->
node -> int * int -> node * int
val reduce_left : t -> int -> node -> node
val reduce_right : t ->
int -> node -> node * int
val eq_char : char -> char -> bool
val get_child : node * (string * int * int) -> node
val canonical : node * (string * int * int) * node ->
node * (string * int * int) * node
val is_root : t -> node * ('a * 'b * int) * 'c -> bool
val has_child : t ->
node * (string * int * int) * node ->
strid * int ->
(node * (string * int * int) * node) option
val has_end : t ->
node * string * node ->
node list option
val add_leaf : t ->
node ->
strid -> int -> int Pervasives.ref -> int -> unit
val insert_node : t ->
int ->
node * ('a * 'b * int) * node ->
node
val add_strid : t -> int -> node -> unit
val add_link : int -> node option -> node -> unit
val get_link : t ->
node * (string * int * int) * 'a ->
node * (string * int * int) * node
type
res = {
}
val update : t ->
strid * int ->
res -> node option -> unit
val create : unit -> t
val fold_tree : t ->
('h -> node -> bool) ->
('h -> node -> 'h) ->
('s list -> 'h -> node -> 's) -> 'h -> 's
val fold_node : t ->
('h -> node -> bool) ->
('h -> node -> 'h) ->
('s list -> 'h -> node -> 's) ->
'h -> node -> 's
val fold_s_node : t ->
('a list -> node -> 'a) -> node -> 'a
val fold_s_tree : t -> ('a list -> node -> 'a) -> 'a
val fold_fs_node : t ->
(node -> bool) ->
('a list -> node -> 'a) -> node -> 'a
val fold_fs_tree : t ->
(node -> bool) ->
('a list -> node -> 'a) -> 'a
val path_restrictions : t -> node -> node list
val path_extensions : 'a -> node -> node list
val max_restrictions : t -> node -> node list
val max_restrictions_aux : t ->
(int * node) list ->
node list -> (int * node) list
module SetShiftNode: Set.Make
(
sig
end
)
val max_extensions : t ->
SetShiftNode.elt option ->
SetShiftNode.elt list * int list
val max_extensions_right : t ->
bool ->
bool ->
int * int ->
SetShiftNode.elt ->
SetShiftNode.t -> SetShiftNode.t
val max_extensions_left : t ->
bool ->
int * int ->
SetShiftNode.elt ->
SetShiftNode.t -> SetShiftNode.t
val max_extensions_remove_right : t ->
bool ->
bool ->
SetShiftNode.elt ->
SetShiftNode.t -> SetShiftNode.t
val max_extensions_remove_left : t ->
bool ->
SetShiftNode.elt ->
SetShiftNode.t -> SetShiftNode.t
val string_restrictions : t -> int -> node list
val find_factor : t ->
string -> node * string * node
val find_factor_aux : t ->
node ->
string * int * int ->
node * (string * int * int) * node
val suffixes : t ->
'a * 'b * node -> (strid * int) list
val strings : 'a -> 'b * 'c * node -> strid Lset.t
val get : t -> strid -> string
val find : t -> string -> strid
val find_node : t -> string -> node
val add : t -> string -> strid
val remove : t -> strid -> unit
val remove_node : bool ->
t ->
strid ->
node -> (node * Suffix_tree.Ext.t) option
val remove_link : t -> node -> unit
val remove_maxcard : (char * node * Suffix_tree.Ext.t) list ->
node Lset.t -> int * int
val fold : (strid -> string -> 'a -> 'a) ->
t -> 'a -> 'a
type
tree =
| |
Node of string * int * int list * tree list |
| |
Leaf of string * (strid * int) |
val tree : t -> tree