summaryrefslogtreecommitdiff
path: root/src/Grasp/Node.hs
diff options
context:
space:
mode:
authorJed Barber <jjbarber@y7mail.com>2014-11-20 22:11:03 +1100
committerJed Barber <jjbarber@y7mail.com>2014-11-20 22:11:03 +1100
commit0c49b3f13dc00eb5811002f230e1a6e4cc52d705 (patch)
tree442992bea3c31abaae0eaa976a3307c5bcc0927e /src/Grasp/Node.hs
parent54ba705026976ae291ec8259abd83033ca01e4c6 (diff)
Factored out graph node/edge and instruction pointer types
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
+