|
Data.Graph.Inductive.NodeMap |
|
|
|
|
Description |
Utility methods to automatically generate and keep track of a mapping
between node labels and Nodes.
|
|
Synopsis |
|
data NodeMap a | | new :: Ord a => NodeMap a | | fromGraph :: (Ord a, Graph g) => g a b -> NodeMap a | | mkNode :: Ord a => NodeMap a -> a -> (LNode a, NodeMap a) | | mkNode_ :: Ord a => NodeMap a -> a -> LNode a | | mkNodes :: Ord a => NodeMap a -> [a] -> ([LNode a], NodeMap a) | | mkNodes_ :: Ord a => NodeMap a -> [a] -> [LNode a] | | mkEdge :: Ord a => NodeMap a -> (a, a, b) -> Maybe (LEdge b) | | mkEdges :: Ord a => NodeMap a -> [(a, a, b)] -> Maybe [LEdge b] | | insMapNode :: (Ord a, DynGraph g) => NodeMap a -> a -> g a b -> (g a b, NodeMap a, LNode a) | | insMapNode_ :: (Ord a, DynGraph g) => NodeMap a -> a -> g a b -> g a b | | insMapEdge :: (Ord a, DynGraph g) => NodeMap a -> (a, a, b) -> g a b -> g a b | | delMapNode :: (Ord a, DynGraph g) => NodeMap a -> a -> g a b -> g a b | | delMapEdge :: (Ord a, DynGraph g) => NodeMap a -> (a, a) -> g a b -> g a b | | insMapNodes :: (Ord a, DynGraph g) => NodeMap a -> [a] -> g a b -> (g a b, NodeMap a, [LNode a]) | | insMapNodes_ :: (Ord a, DynGraph g) => NodeMap a -> [a] -> g a b -> g a b | | insMapEdges :: (Ord a, DynGraph g) => NodeMap a -> [(a, a, b)] -> g a b -> g a b | | delMapNodes :: (Ord a, DynGraph g) => NodeMap a -> [a] -> g a b -> g a b | | delMapEdges :: (Ord a, DynGraph g) => NodeMap a -> [(a, a)] -> g a b -> g a b | | mkMapGraph :: (Ord a, DynGraph g) => [a] -> [(a, a, b)] -> (g a b, NodeMap a) | | type NodeMapM a b g r = State (NodeMap a, g a b) r | | run :: (DynGraph g, Ord a) => g a b -> NodeMapM a b g r -> (r, (NodeMap a, g a b)) | | run_ :: (DynGraph g, Ord a) => g a b -> NodeMapM a b g r -> g a b | | mkNodeM :: (Ord a, DynGraph g) => a -> NodeMapM a b g (LNode a) | | mkNodesM :: (Ord a, DynGraph g) => [a] -> NodeMapM a b g [LNode a] | | mkEdgeM :: (Ord a, DynGraph g) => (a, a, b) -> NodeMapM a b g (Maybe (LEdge b)) | | mkEdgesM :: (Ord a, DynGraph g) => [(a, a, b)] -> NodeMapM a b g (Maybe [LEdge b]) | | insMapNodeM :: (Ord a, DynGraph g) => a -> NodeMapM a b g (LNode a) | | insMapEdgeM :: (Ord a, DynGraph g) => (a, a, b) -> NodeMapM a b g () | | delMapNodeM :: (Ord a, DynGraph g) => a -> NodeMapM a b g () | | delMapEdgeM :: (Ord a, DynGraph g) => (a, a) -> NodeMapM a b g () | | insMapNodesM :: (Ord a, DynGraph g) => [a] -> NodeMapM a b g [LNode a] | | insMapEdgesM :: (Ord a, DynGraph g) => [(a, a, b)] -> NodeMapM a b g () | | delMapNodesM :: (Ord a, DynGraph g) => [a] -> NodeMapM a b g () | | delMapEdgesM :: (Ord a, DynGraph g) => [(a, a)] -> NodeMapM a b g () |
|
|
|
Functional Construction
|
|
data NodeMap a |
Instances | |
|
|
Map Construction
|
|
new :: Ord a => NodeMap a |
Create a new, empty mapping.
|
|
fromGraph :: (Ord a, Graph g) => g a b -> NodeMap a |
Generate a mapping containing the nodes in the given graph.
|
|
mkNode :: Ord a => NodeMap a -> a -> (LNode a, NodeMap a) |
Generate a labelled node from the given label. Will return the same node
for the same label.
|
|
mkNode_ :: Ord a => NodeMap a -> a -> LNode a |
Generate a labelled node and throw away the modified NodeMap.
|
|
mkNodes :: Ord a => NodeMap a -> [a] -> ([LNode a], NodeMap a) |
Construct a list of nodes.
|
|
mkNodes_ :: Ord a => NodeMap a -> [a] -> [LNode a] |
Construct a list of nodes and throw away the modified NodeMap.
|
|
mkEdge :: Ord a => NodeMap a -> (a, a, b) -> Maybe (LEdge b) |
Generate a LEdge from the node labels.
|
|
mkEdges :: Ord a => NodeMap a -> [(a, a, b)] -> Maybe [LEdge b] |
Generates a list of LEdges.
|
|
Graph Construction
|
|
These functions mirror the construction and destruction functions in
Graph, but use the given NodeMap to look up
the appropriate Nodes. Note that the insMapNode family of functions
will create new nodes as needed, but the other functions will not.
|
|
insMapNode :: (Ord a, DynGraph g) => NodeMap a -> a -> g a b -> (g a b, NodeMap a, LNode a) |
|
insMapNode_ :: (Ord a, DynGraph g) => NodeMap a -> a -> g a b -> g a b |
|
insMapEdge :: (Ord a, DynGraph g) => NodeMap a -> (a, a, b) -> g a b -> g a b |
|
delMapNode :: (Ord a, DynGraph g) => NodeMap a -> a -> g a b -> g a b |
|
delMapEdge :: (Ord a, DynGraph g) => NodeMap a -> (a, a) -> g a b -> g a b |
|
insMapNodes :: (Ord a, DynGraph g) => NodeMap a -> [a] -> g a b -> (g a b, NodeMap a, [LNode a]) |
|
insMapNodes_ :: (Ord a, DynGraph g) => NodeMap a -> [a] -> g a b -> g a b |
|
insMapEdges :: (Ord a, DynGraph g) => NodeMap a -> [(a, a, b)] -> g a b -> g a b |
|
delMapNodes :: (Ord a, DynGraph g) => NodeMap a -> [a] -> g a b -> g a b |
|
delMapEdges :: (Ord a, DynGraph g) => NodeMap a -> [(a, a)] -> g a b -> g a b |
|
mkMapGraph :: (Ord a, DynGraph g) => [a] -> [(a, a, b)] -> (g a b, NodeMap a) |
|
Monadic Construction
|
|
type NodeMapM a b g r = State (NodeMap a, g a b) r |
Graph construction monad; handles passing both the NodeMap and the
Graph.
|
|
The following mirror the functional construction functions, but handle passing
NodeMaps and Graphs behind the scenes.
|
|
Map Construction
|
|
run :: (DynGraph g, Ord a) => g a b -> NodeMapM a b g r -> (r, (NodeMap a, g a b)) |
Run a construction; return the value of the computation, the modified
NodeMap, and the modified Graph.
|
|
run_ :: (DynGraph g, Ord a) => g a b -> NodeMapM a b g r -> g a b |
Run a construction and only return the Graph.
|
|
mkNodeM :: (Ord a, DynGraph g) => a -> NodeMapM a b g (LNode a) |
Monadic node construction.
|
|
mkNodesM :: (Ord a, DynGraph g) => [a] -> NodeMapM a b g [LNode a] |
|
mkEdgeM :: (Ord a, DynGraph g) => (a, a, b) -> NodeMapM a b g (Maybe (LEdge b)) |
|
mkEdgesM :: (Ord a, DynGraph g) => [(a, a, b)] -> NodeMapM a b g (Maybe [LEdge b]) |
|
Graph Construction
|
|
insMapNodeM :: (Ord a, DynGraph g) => a -> NodeMapM a b g (LNode a) |
|
insMapEdgeM :: (Ord a, DynGraph g) => (a, a, b) -> NodeMapM a b g () |
|
delMapNodeM :: (Ord a, DynGraph g) => a -> NodeMapM a b g () |
|
delMapEdgeM :: (Ord a, DynGraph g) => (a, a) -> NodeMapM a b g () |
|
insMapNodesM :: (Ord a, DynGraph g) => [a] -> NodeMapM a b g [LNode a] |
|
insMapEdgesM :: (Ord a, DynGraph g) => [(a, a, b)] -> NodeMapM a b g () |
|
delMapNodesM :: (Ord a, DynGraph g) => [a] -> NodeMapM a b g () |
|
delMapEdgesM :: (Ord a, DynGraph g) => [(a, a)] -> NodeMapM a b g () |
|
Produced by Haddock version 0.8 |