Add setSignalInfo accessor for FlattenState.
[matthijs/master-project/cλash.git] / FlattenTypes.hs
index bcb8be7d55d8e17a762b13e50d4314ab8a512b9b..8dbdc3b6ab2b9b1a676cd554ba72a78d96e52b38 100644 (file)
@@ -176,3 +176,16 @@ genSignalId use ty = do
   let s = (n, SignalInfo Nothing use ty)
   State.put (defs, s:sigs, n+1)
   return n
+
+-- | Returns the SignalInfo for the given signal. Errors if the signal is not
+--   known in the session.
+getSignalInfo :: SignalId -> FlattenState SignalInfo
+getSignalInfo id = do
+  (defs, sigs, n) <- State.get
+  return $ signalInfo sigs id
+
+setSignalInfo :: SignalId -> SignalInfo -> FlattenState ()
+setSignalInfo id' info' = do
+  (defs, sigs, n) <- State.get
+  let sigs' = map (\(id, info) -> (id, if id == id' then info' else info)) sigs
+  State.put (defs, sigs', n)