type OurGraph = Graph DaVinciGraph DaVinciGraphParms DaVinciNode DaVinciNodeType DaVinciNodeTypeParms DaVinciArc DaVinciArcType DaVinciArcTypeParms |
|
type CompTable = [(String, String, String)] |
|
data AbstractionGraph = AbstractionGraph {theGraph :: OurGraph | nodeTypes :: [(String, DaVinciNodeType (String, Int, Int))] | edgeTypes :: [(String, DaVinciArcType EdgeValue)] | nodes :: [(Int, (String, DaVinciNode (String, Int, Int)))] | edges :: [(Int, (Int, Int, String, DaVinciArc EdgeValue))] | edgeComp :: CompTable | eventTable :: [(Int, Entry)] | } |
|
type Descr = Int |
|
type EdgeValue = (String, Int, Maybe (LEdge DGLinkLab)) |
|
type GraphInfo = IORef ([(Descr, AbstractionGraph)], Descr) |
|
data Result = Result Descr (Maybe String) |
|
data Entry = Entry {newNodes :: [(Descr, (String, DaVinciNode (String, Int, Int)))] | oldNodes :: [(Descr, (String, String))] | newEdges :: [(Int, (Int, Int, String, DaVinciArc EdgeValue))] | oldEdges :: [(Int, (Int, Int, String, EdgeValue))] | } |
|
createEntry :: [(Descr, (String, DaVinciNode (String, Int, Int)))] -> [(Descr, (String, String))] -> [(Descr, (Int, Int, String, DaVinciArc EdgeValue))] -> [(Descr, (Int, Int, String, EdgeValue))] -> Descr -> (Int, Entry) |
|
specialzip :: [a] -> [b] -> [(a, b)] |
|
get :: Descr -> [(Descr, a)] -> (Descr, a) |
|
remove :: Eq a => a -> [(a, b)] -> [(a, b)] |
|
initgraphs :: IO GraphInfo |
|
makegraph :: String -> [GlobalMenu] -> [(String, DaVinciNodeTypeParms (String, Descr, Descr))] -> [(String, DaVinciArcTypeParms (String, Descr, Maybe (LEdge DGLinkLab)))] -> CompTable -> GraphInfo -> IO Result |
|
delgraph :: Descr -> GraphInfo -> IO Result |
|
delallgraphs :: GraphInfo -> IO () |
|
addnode :: Descr -> String -> String -> GraphInfo -> IO Result |
|
delnode :: Descr -> Descr -> GraphInfo -> IO Result |
|
addlink :: Descr -> String -> String -> Maybe (LEdge DGLinkLab) -> Descr -> Descr -> GraphInfo -> IO Result |
|
getNodeNameAndTypeAsString :: AbstractionGraph -> Descr -> IO String |
|
dellink :: Descr -> Descr -> GraphInfo -> IO Result |
|
redisplay :: Descr -> GraphInfo -> IO Result |
|
determineedgetype :: AbstractionGraph -> (String, String) -> Maybe String |
|
fetchEdgesOfNode :: AbstractionGraph -> Descr -> Maybe ([Descr], [Descr]) |
|
hidenodes :: Descr -> [Descr] -> GraphInfo -> IO Result |
|
hidenodesaux :: Descr -> [Descr] -> GraphInfo -> IO Result |
|
makepathsMain :: AbstractionGraph -> [Descr] -> Maybe ([(Descr, Descr, String)], [([Descr], [Descr])]) |
|
removeDanglingEdges :: [(Descr, Descr, String)] -> [Descr] -> [(Descr, Descr, String)] |
|
makepaths :: AbstractionGraph -> [Descr] -> ([Descr], [Descr]) -> Maybe [(Descr, Descr, String)] |
|
makepathsaux :: AbstractionGraph -> [Descr] -> [Descr] -> ((Descr, Descr, String, DaVinciArc EdgeValue), (Descr, Descr, String, DaVinciArc EdgeValue)) -> Maybe [(Descr, Descr, String)] |
|
checkpath :: AbstractionGraph -> [Descr] -> [Descr] -> (Descr, Descr, String, DaVinciArc EdgeValue) -> Maybe [(Descr, Descr, String)] |
|
addpaths :: Descr -> [(Descr, Descr, String)] -> GraphInfo -> IO Result |
|
hidenodetype :: Descr -> String -> GraphInfo -> IO Result |
|
hideSetOfNodeTypes :: Descr -> [String] -> GraphInfo -> IO Result |
|
abstractnodes :: Descr -> [Descr] -> GraphInfo -> IO Result |
|
replaceByAbstractNode :: Descr -> [Descr] -> [(String, DaVinciNode (String, Int, Int))] -> [Descr] -> GraphInfo -> IO Result |
|
hideedges :: Descr -> [Descr] -> GraphInfo -> IO Result |
|
hideedgesaux :: Descr -> [Descr] -> GraphInfo -> IO Result |
|
hideedgetype :: Descr -> String -> GraphInfo -> IO Result |
|
showIt :: Descr -> Descr -> GraphInfo -> IO Result |
|
shownodes :: Descr -> [(Descr, (String, String))] -> GraphInfo -> IO Result |
|
showedges :: Descr -> [(Int, (Int, Int, String, EdgeValue))] -> GraphInfo -> IO Result |
|
saveOldNodes :: AbstractionGraph -> [(Int, (String, DaVinciNode (String, Int, Int)))] -> IO [(Int, (String, String))] |
|
saveOldEdges :: AbstractionGraph -> [(Int, (Int, Int, String, DaVinciArc EdgeValue))] -> IO [(Int, (Int, Int, String, EdgeValue))] |
|
getEdgeName :: EdgeValue -> String |
|
getEdgeLabel :: EdgeValue -> Maybe (LEdge DGLinkLab) |