| 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) |