Module Frenetic_kernel.Network.Net.Topology

type t
type vertex
include sig ... end
val vertex_of_sexp : Ppx_sexp_conv_lib.Sexp.t ‑> vertex
val sexp_of_vertex : vertex ‑> Ppx_sexp_conv_lib.Sexp.t
type edge
include sig ... end
val edge_of_sexp : Ppx_sexp_conv_lib.Sexp.t ‑> edge
val sexp_of_edge : edge ‑> Ppx_sexp_conv_lib.Sexp.t
type port = int32
include sig ... end
val port_of_sexp : Ppx_sexp_conv_lib.Sexp.t ‑> port
val sexp_of_port : port ‑> Ppx_sexp_conv_lib.Sexp.t
module Vertex : VERTEX with type t = Node.t
module Edge : EDGE with type t = Link.t
module UnitWeight : WEIGHT with type t = int and type edge = Edge.t
module EdgeSet : Core_kernel.Set.S with type EdgeSet.Elt.t = edge
module VertexSet : Core_kernel.Set.S with type VertexSet.Elt.t = vertex
module VertexHash : Core_kernel.Hashtbl.S with type VertexHash.key = vertex
module PortSet : Core_kernel.Set.S with type PortSet.Elt.t = port
val copy : t ‑> t
val empty : unit ‑> t
val add_vertex : t ‑> Vertex.t ‑> t * vertex
val add_port : t ‑> vertex ‑> port ‑> t
val add_edge : t ‑> vertex ‑> port ‑> Edge.t ‑> vertex ‑> port ‑> t * edge
val num_vertexes : t ‑> int
val num_edges : t ‑> int
val vertexes : t ‑> VertexSet.t
val edges : t ‑> EdgeSet.t
val neighbors : t ‑> vertex ‑> VertexSet.t
val find_edge : t ‑> vertex ‑> vertex ‑> edge
val find_all_edges : t ‑> vertex ‑> vertex ‑> EdgeSet.t
val vertex_to_ports : t ‑> vertex ‑> PortSet.t
val next_hop : t ‑> vertex ‑> port ‑> edge option
val edge_src : edge ‑> vertex * port
val edge_dst : edge ‑> vertex * port
val inverse_edge : t ‑> edge ‑> edge option
val vertex_to_string : t ‑> vertex ‑> string
val vertex_to_label : t ‑> vertex ‑> Vertex.t
val vertex_of_label : t ‑> Vertex.t ‑> vertex
val edge_to_string : t ‑> edge ‑> string
val edge_to_label : t ‑> edge ‑> Edge.t
val iter_succ : (edge ‑> unit) ‑> t ‑> vertex ‑> unit
val iter_vertexes : (vertex ‑> unit) ‑> t ‑> unit
val iter_edges : (edge ‑> unit) ‑> t ‑> unit
val fold_vertexes : (vertex ‑> 'a ‑> 'a) ‑> t ‑> 'a ‑> 'a
val fold_edges : (edge ‑> 'a ‑> 'a) ‑> t ‑> 'a ‑> 'a
val remove_vertex : t ‑> vertex ‑> t
val remove_port : t ‑> vertex ‑> port ‑> t
val remove_edge : t ‑> edge ‑> t
val remove_endpoint : t ‑> (vertex * port) ‑> t