Graph¶
This document is auto-generated for Owl’s APIs. #33 entries have been extracted. timestamp: 2018-04-16 13:12:54
Github: {Signature} {Implementation}
Type definition¶
type order = BFS | DFS
Order to traverse a graph, BFS or DFS.
type dir = Ancestor | Descendant
Iteration direction, i.e. ancestors or descendants
type 'a node
type definition of a node
Obtaining properties¶
val id : 'a node -> int
id x returns the id of node x.
val name : 'a node -> string
name x returns the name string of node x.
val parents : 'a node -> 'a node array
parents x returns the parents of node x.
val children : 'a node -> 'a node array
children x returns the children of node x.
val indegree : 'a node -> int
indegree x returns the in-degree of node x.
val outdegree : 'a node -> int
outdegree x returns the out-degree of node x.
val attr : 'a node -> 'a
attr x returns the attr field of node x.
val set_attr : 'a node -> 'a -> unit
set_attr x sets the attr field of node x.
Manipulation functions¶
val node : ?id:int -> ?name:string -> ?prev:'a node array -> ?next:'a node array -> 'a -> 'a node
node ~id ~name ~prev ~next attr creates a node with given id and name
string. The created node is also connected to parents in prev and children
in next. The attr will be saved in attr field.
val connect : 'a node array -> 'a node array -> unit
connect parents children connects a set of parents to a set of children.
The created links are the Cartesian product of parents and children.
val remove_node : 'a node -> unit
remove_node x removes node x from the graph by disconnecting itself
from all its parent nodes and child nodes.
val remove_edge : 'a node -> 'a node -> unit
remove_edge src dst removes a link src -> dst from the graph. Note that
it does not remove [dst -> src] if there exists one.
val copy : ?dir:dir -> 'a node array -> 'a node array
copy ~dir x makes a copy of x and all its ancestors
(if dir = Ancestor) or all its descendants (if dir = Descendant).
Note that this function only makes a copy of the graph structure, attr
fileds of the nodes in the new graph share the same memory with those in the
original graph.
Iterators¶
val iter_ancestors : ?order:order -> ('a node -> unit) -> 'a node array -> unit
Iterate the ancestors of a given node.
val iter_descendants : ?order:order -> ('a node -> unit) -> 'a node array -> unit
Iterate the descendants of a given node.
val filter_ancestors : ('a node -> bool) -> 'a node array -> 'a node array
Filter the ancestors of a given node.
val filter_descendants : ('a node -> bool) -> 'a node array -> 'a node array
Iterate the descendants of a given node.
val fold_ancestors : ('b -> 'a node -> 'b) -> 'b -> 'a node array -> 'b
Fold the ancestors of a given node.
val fold_descendants : ('b -> 'a node -> 'b) -> 'b -> 'a node array -> 'b
Fold the descendants of a given node.
val iter_in_edges : ?order:order -> ('a node -> 'a node -> unit) -> 'a node array -> unit
Iterate all the in-edges of a given node.
val iter_out_edges : ?order:order -> ('a node -> 'a node -> unit) -> 'a node array -> unit
Iterate all the out-edges of a given node.
val fold_in_edges : ('b -> 'a node -> 'a node -> 'b) -> 'b -> 'a node array -> 'b
Fold all the in-edges of a given node.
val fold_out_edges : ('b -> 'a node -> 'a node -> 'b) -> 'b -> 'a node array -> 'b
Fold all the out-edges of a given node.
Helper functions¶
val pp_node : Format.formatter -> 'a node -> unit
Pretty print a given node.
val to_string : bool -> 'a node array -> string
Convert a given node to its string representaion.