This module implements a VersionDag, a graph which is used for displaying versions within the Workbench.
The main differences between this and normal SimpleGraph.SimpleGraph'
s
are that
(1) the parents of a node are fixed when it is created, as are
all arc labels and arc type labels.
(2) it is possible to selectively hide nodes from being displayed.
We intelligently display the structure between these nodes.
(3) it is not permitted to delete a node with children. (Though it
may be hidden.)
- data VersionDag nodeKey nodeInfo arcInfo
- newVersionDag :: (Ord nodeKey, Ord arcInfo, Eq nodeInfo) => (nodeInfo -> Bool) -> (nodeInfo -> nodeKey) -> (nodeInfo -> [(arcInfo, nodeKey)]) -> IO (VersionDag nodeKey nodeInfo arcInfo)
- addVersion :: (Ord nodeKey, Ord arcInfo, Eq nodeInfo) => VersionDag nodeKey nodeInfo arcInfo -> nodeInfo -> IO ()
- addVersions :: (Ord nodeKey, Ord arcInfo, Eq nodeInfo) => VersionDag nodeKey nodeInfo arcInfo -> [nodeInfo] -> IO ()
- deleteVersion :: Ord nodeKey => VersionDag nodeKey nodeInfo arcInfo -> nodeKey -> IO ()
- setNodeInfo :: (Ord nodeKey, Ord arcInfo, Eq nodeInfo) => VersionDag nodeKey nodeInfo arcInfo -> nodeInfo -> IO ()
- changeIsHidden :: (Ord nodeKey, Ord arcInfo, Eq nodeInfo) => VersionDag nodeKey nodeInfo arcInfo -> (nodeInfo -> Bool) -> IO ()
- toDisplayedGraph :: (Ord nodeKey, Ord arcInfo, Eq nodeInfo) => VersionDag nodeKey nodeInfo arcInfo -> GraphConnection (nodeInfo, Bool) () (Maybe arcInfo) ()
- toInputGraph :: (Ord nodeKey, Ord arcInfo, Eq nodeInfo) => VersionDag nodeKey nodeInfo arcInfo -> GraphConnection nodeInfo () arcInfo ()
- getInputGraphBack :: (Ord nodeKey, Ord arcInfo, Eq nodeInfo) => VersionDag nodeKey nodeInfo arcInfo -> (nodeKey -> nodeInfo -> graphBackNodeKey) -> IO (GraphBack nodeKey graphBackNodeKey)
- nodeKeyExists :: Ord nodeKey => VersionDag nodeKey nodeInfo arcInfo -> nodeKey -> IO Bool
- lookupNodeKey :: Ord nodeKey => VersionDag nodeKey nodeInfo arcInfo -> nodeKey -> IO (Maybe nodeInfo)
- getNodeInfos :: Ord nodeKey => VersionDag nodeKey nodeInfo arcInfo -> IO [nodeInfo]
Documentation
data VersionDag nodeKey nodeInfo arcInfo Source
newVersionDag :: (Ord nodeKey, Ord arcInfo, Eq nodeInfo) => (nodeInfo -> Bool) -> (nodeInfo -> nodeKey) -> (nodeInfo -> [(arcInfo, nodeKey)]) -> IO (VersionDag nodeKey nodeInfo arcInfo)Source
addVersion :: (Ord nodeKey, Ord arcInfo, Eq nodeInfo) => VersionDag nodeKey nodeInfo arcInfo -> nodeInfo -> IO ()Source
addVersions :: (Ord nodeKey, Ord arcInfo, Eq nodeInfo) => VersionDag nodeKey nodeInfo arcInfo -> [nodeInfo] -> IO ()Source
deleteVersion :: Ord nodeKey => VersionDag nodeKey nodeInfo arcInfo -> nodeKey -> IO ()Source
setNodeInfo :: (Ord nodeKey, Ord arcInfo, Eq nodeInfo) => VersionDag nodeKey nodeInfo arcInfo -> nodeInfo -> IO ()Source
Change the nodeInfo of something already added.
changeIsHidden :: (Ord nodeKey, Ord arcInfo, Eq nodeInfo) => VersionDag nodeKey nodeInfo arcInfo -> (nodeInfo -> Bool) -> IO ()Source
Change the hidden function
toDisplayedGraph :: (Ord nodeKey, Ord arcInfo, Eq nodeInfo) => VersionDag nodeKey nodeInfo arcInfo -> GraphConnection (nodeInfo, Bool) () (Maybe arcInfo) ()Source
toInputGraph :: (Ord nodeKey, Ord arcInfo, Eq nodeInfo) => VersionDag nodeKey nodeInfo arcInfo -> GraphConnection nodeInfo () arcInfo ()Source
getInputGraphBack :: (Ord nodeKey, Ord arcInfo, Eq nodeInfo) => VersionDag nodeKey nodeInfo arcInfo -> (nodeKey -> nodeInfo -> graphBackNodeKey) -> IO (GraphBack nodeKey graphBackNodeKey)Source
nodeKeyExists :: Ord nodeKey => VersionDag nodeKey nodeInfo arcInfo -> nodeKey -> IO BoolSource
lookupNodeKey :: Ord nodeKey => VersionDag nodeKey nodeInfo arcInfo -> nodeKey -> IO (Maybe nodeInfo)Source
getNodeInfos :: Ord nodeKey => VersionDag nodeKey nodeInfo arcInfo -> IO [nodeInfo]Source