sig
type 'a priority =
'a SHGraph.priority =
Filter of ('a -> bool)
| Priority of ('a -> int)
type ('a, 'b) compare =
('a, 'b) SHGraph.compare = {
hashv : 'a Hashhe.compare;
hashh : 'b Hashhe.compare;
comparev : 'a -> 'a -> int;
compareh : 'b -> 'b -> int;
}
type ('a, 'b, 'c, 'd, 'e) t = {
compare : ('a, 'b) PSHGraph.compare;
mutable graph : ('a, 'b, 'c, 'd, 'e) SHGraph.t;
}
val stdcompare : ('a, 'b) PSHGraph.compare
val make :
('a, 'b) PSHGraph.compare ->
('a, 'b, 'c, 'd, 'e) SHGraph.t -> ('a, 'b, 'c, 'd, 'e) PSHGraph.t
val create_compare :
('a, 'b) PSHGraph.compare -> int -> 'c -> ('a, 'b, 'd, 'e, 'c) PSHGraph.t
val create :
('a, 'b) PSHGraph.compare -> int -> 'c -> ('a, 'b, 'd, 'e, 'c) PSHGraph.t
val clear : ('a, 'b, 'c, 'd, 'e) PSHGraph.t -> unit
val size_vertex : ('a, 'b, 'c, 'd, 'e) PSHGraph.t -> int
val size_hedge : ('a, 'b, 'c, 'd, 'e) PSHGraph.t -> int
val size_edgevh : ('a, 'b, 'c, 'd, 'e) PSHGraph.t -> int
val size_edgehv : ('a, 'b, 'c, 'd, 'e) PSHGraph.t -> int
val size : ('a, 'b, 'c, 'd, 'e) PSHGraph.t -> int * int * int * int
val attrvertex : ('a, 'b, 'c, 'd, 'e) PSHGraph.t -> 'a -> 'c
val attrhedge : ('a, 'b, 'c, 'd, 'e) PSHGraph.t -> 'b -> 'd
val info : ('a, 'b, 'c, 'd, 'e) PSHGraph.t -> 'e
val is_vertex : ('a, 'b, 'c, 'd, 'e) PSHGraph.t -> 'a -> bool
val is_hedge : ('a, 'b, 'c, 'd, 'e) PSHGraph.t -> 'b -> bool
val is_empty : ('a, 'b, 'c, 'd, 'e) PSHGraph.t -> bool
val succhedge : ('a, 'b, 'c, 'd, 'e) PSHGraph.t -> 'a -> 'b PSette.t
val predhedge : ('a, 'b, 'c, 'd, 'e) PSHGraph.t -> 'a -> 'b PSette.t
val succvertex : ('a, 'b, 'c, 'd, 'e) PSHGraph.t -> 'b -> 'a array
val predvertex : ('a, 'b, 'c, 'd, 'e) PSHGraph.t -> 'b -> 'a array
val succ_vertex : ('a, 'b, 'c, 'd, 'e) PSHGraph.t -> 'a -> 'a PSette.t
val pred_vertex : ('a, 'b, 'c, 'd, 'e) PSHGraph.t -> 'a -> 'a PSette.t
val add_vertex : ('a, 'b, 'c, 'd, 'e) PSHGraph.t -> 'a -> 'c -> unit
val add_hedge :
('a, 'b, 'c, 'd, 'e) PSHGraph.t ->
'b -> 'd -> pred:'a array -> succ:'a array -> unit
val replace_attrvertex :
('a, 'b, 'c, 'd, 'e) PSHGraph.t -> 'a -> 'c -> unit
val replace_attrhedge : ('a, 'b, 'c, 'd, 'e) PSHGraph.t -> 'b -> 'd -> unit
val remove_hedge : ('a, 'b, 'c, 'd, 'e) PSHGraph.t -> 'b -> unit
val remove_vertex : ('a, 'b, 'c, 'd, 'e) PSHGraph.t -> 'a -> unit
val iter_vertex :
('a, 'b, 'c, 'd, 'e) PSHGraph.t ->
('a -> 'c -> pred:'b PSette.t -> succ:'b PSette.t -> unit) -> unit
val fold_vertex :
('a, 'b, 'c, 'd, 'e) PSHGraph.t ->
('a -> 'c -> pred:'b PSette.t -> succ:'b PSette.t -> 'f -> 'f) ->
'f -> 'f
val iter_hedge :
('a, 'b, 'c, 'd, 'e) PSHGraph.t ->
('b -> 'd -> pred:'a array -> succ:'a array -> unit) -> unit
val fold_hedge :
('a, 'b, 'c, 'd, 'e) PSHGraph.t ->
('b -> 'd -> pred:'a array -> succ:'a array -> 'f -> 'f) -> 'f -> 'f
val map :
('a, 'b, 'c, 'd, 'e) PSHGraph.t ->
('a -> 'c -> 'f) ->
('b -> 'd -> 'g) -> ('e -> 'h) -> ('a, 'b, 'f, 'g, 'h) PSHGraph.t
val copy :
('a -> 'b -> 'c) ->
('d -> 'e -> 'f) ->
('g -> 'h) ->
('a, 'd, 'b, 'e, 'g) PSHGraph.t -> ('a, 'd, 'c, 'f, 'h) PSHGraph.t
val transpose :
('a -> 'b -> 'c) ->
('d -> 'e -> 'f) ->
('g -> 'h) ->
('a, 'd, 'b, 'e, 'g) PSHGraph.t -> ('a, 'd, 'c, 'f, 'h) PSHGraph.t
val topological_sort :
?priority:'a PSHGraph.priority ->
('b, 'a, 'c, 'd, 'e) PSHGraph.t -> 'b -> 'b list
val topological_sort_multi :
'a ->
'b ->
?priority:'b PSHGraph.priority ->
('a, 'b, 'c, 'd, 'e) PSHGraph.t -> 'a PSette.t -> 'a list
val reachable :
?filter:('a -> bool) ->
('b, 'a, 'c, 'd, 'e) PSHGraph.t -> 'b -> 'b PSette.t * 'a PSette.t
val reachable_multi :
'a ->
'b ->
?filter:('b -> bool) ->
('a, 'b, 'c, 'd, 'e) PSHGraph.t ->
'a PSette.t -> 'a PSette.t * 'b PSette.t
val cfc :
?priority:'a PSHGraph.priority ->
('b, 'a, 'c, 'd, 'e) PSHGraph.t -> 'b -> 'b list list
val cfc_multi :
'a ->
'b ->
?priority:'b PSHGraph.priority ->
('a, 'b, 'c, 'd, 'e) PSHGraph.t -> 'a PSette.t -> 'a list list
val scfc :
?priority:'a PSHGraph.priority ->
('b, 'a, 'c, 'd, 'e) PSHGraph.t -> 'b -> 'b Ilist.t
val scfc_multi :
'a ->
'b ->
?priority:'b PSHGraph.priority ->
('a, 'b, 'c, 'd, 'e) PSHGraph.t -> 'a PSette.t -> 'a Ilist.t
val print :
(Format.formatter -> 'a -> unit) ->
(Format.formatter -> 'b -> unit) ->
(Format.formatter -> 'c -> unit) ->
(Format.formatter -> 'd -> unit) ->
(Format.formatter -> 'e -> unit) ->
Format.formatter -> ('a, 'b, 'c, 'd, 'e) PSHGraph.t -> unit
val print_dot :
?style:string ->
?titlestyle:string ->
?vertexstyle:string ->
?hedgestyle:string ->
?fvertexstyle:('a -> string) ->
?fhedgestyle:('b -> string) ->
?title:string ->
(Format.formatter -> 'a -> unit) ->
(Format.formatter -> 'b -> unit) ->
(Format.formatter -> 'a -> 'c -> unit) ->
(Format.formatter -> 'b -> 'd -> unit) ->
Format.formatter -> ('a, 'b, 'c, 'd, 'e) PSHGraph.t -> unit
val min : ('a, 'b, 'c, 'd, 'e) PSHGraph.t -> 'a PSette.t
val max : ('a, 'b, 'c, 'd, 'e) PSHGraph.t -> 'a PSette.t
end