summaryrefslogtreecommitdiff
path: root/src/Grasp/Node.hs
diff options
context:
space:
mode:
Diffstat (limited to 'src/Grasp/Node.hs')
-rw-r--r--src/Grasp/Node.hs47
1 files changed, 47 insertions, 0 deletions
diff --git a/src/Grasp/Node.hs b/src/Grasp/Node.hs
new file mode 100644
index 0000000..ce84163
--- /dev/null
+++ b/src/Grasp/Node.hs
@@ -0,0 +1,47 @@
+module Grasp.Node (
+ GNode,
+ GNodeType,
+
+ singleton,
+ uSingleton,
+ fromStringList,
+ lab,
+ inst,
+ idNo
+ ) where
+
+
+
+import Data.Graph.Inductive.Graph( LNode )
+import Data.Map( Map )
+import qualified Data.Map as Map
+
+
+
+type GNode = LNode (Maybe String, String)
+type GNodeType = (Maybe String, String)
+
+
+
+singleton :: Int -> String -> String -> GNode
+singleton i m s = (i,(Just m,s))
+
+uSingleton :: Int -> String -> GNode
+uSingleton i s = (i,(Nothing,s))
+
+fromStringList :: Map String Int -> [(String,String)] -> [GNode]
+fromStringList m ns =
+ let change x = case (Map.lookup x m) of
+ Just a -> a
+ Nothing -> error "Grasp.Node.fromStringList: no value for key " ++ x
+ in map (\(x,y) -> (change x, (Just x, y))) ns
+
+lab :: GNode -> Maybe String
+lab (_,(x,_)) = x
+
+inst :: GNode -> String
+inst (_,(_,x)) = x
+
+idNo :: GNode -> Int
+idNo (x,(_,_)) = x
+