Store the Haskell Type in SignalInfo.
authorMatthijs Kooijman <m.kooijman@student.utwente.nl>
Fri, 13 Feb 2009 12:36:20 +0000 (13:36 +0100)
committerMatthijs Kooijman <m.kooijman@student.utwente.nl>
Fri, 13 Feb 2009 12:36:20 +0000 (13:36 +0100)
Flatten.hs
FlattenTypes.hs
Pretty.hs
Translator.hs

index e62f1869fd1182ed1251ea5249164ac934242ab8..cd515859f0879755d9d7f6e704bfb241271d9fbc 100644 (file)
@@ -38,7 +38,7 @@ typeMapToUseMap ::
   -> FlattenState (SignalMap UnnamedSignal)
 
 typeMapToUseMap (Single ty) = do
-  id <- genSignalId
+  id <- genSignalId ty
   return $ Single id
 
 typeMapToUseMap (Tuple tymaps) = do
index 7838dcdcbc28563fa7f77d54063e21183b9a3cd6..c8cd306d077a9eefe48e1cfed5c4ef7a01570b73 100644 (file)
@@ -4,6 +4,7 @@ import Data.Traversable
 import qualified Control.Monad.State as State
 
 import CoreSyn
+import qualified Type
 
 import HsValueMap
 
@@ -76,8 +77,9 @@ data CondDef sigid = CondDef {
 
 -- | Information on a signal definition
 data SignalInfo = SignalInfo {
-  name :: Maybe String
-} deriving (Eq, Show)
+  name :: Maybe String,
+  ty   :: Type.Type
+}
 
 -- | A flattened function
 data FlatFunction' sigid = FlatFunction {
@@ -86,7 +88,7 @@ data FlatFunction' sigid = FlatFunction {
   apps   :: [FApp sigid],
   conds  :: [CondDef sigid],
   sigs   :: [(sigid, SignalInfo)]
-} deriving (Show, Eq)
+}
 
 -- | A flat function that does not have its signals named
 type FlatFunction = FlatFunction' UnnamedSignal
@@ -119,10 +121,10 @@ addCondDef c = do
   State.put (apps, c:conds, sigs, n)
 
 -- | Generates a new signal id, which is unique within the current flattening.
-genSignalId :: FlattenState UnnamedSignal 
-genSignalId = do
+genSignalId :: Type.Type -> FlattenState UnnamedSignal 
+genSignalId ty = do
   (apps, conds, sigs, n) <- State.get
   -- Generate a new numbered but unnamed signal
-  let s = (n, SignalInfo Nothing)
+  let s = (n, SignalInfo Nothing ty)
   State.put (apps, conds, s:sigs, n+1)
   return n
index 3797fe2ad1e0f3a45b8a8094e39742b1fa3ac5bd..98a3d33e9e7a15fe535caf9d23abb541cd5bd32c 100644 (file)
--- a/Pretty.hs
+++ b/Pretty.hs
@@ -47,8 +47,8 @@ instance Pretty id => Pretty (CondDef id) where
   pPrint _ = text "TODO"
 
 instance Pretty SignalInfo where
-  pPrint (SignalInfo Nothing) = empty
-  pPrint (SignalInfo (Just name)) = text ":" <> text name
+  pPrint (SignalInfo Nothing ty) = empty
+  pPrint (SignalInfo (Just name) ty) = text ":" <> text name
 
 instance Pretty VHDLSession where
   pPrint (VHDLSession mod nameCount funcs) =
index b7d3e0ef32d681fc2f80562212a79d7960611a54..78c3a6f08be46eec78cde6662c6e0c73c9ed85c9 100644 (file)
@@ -186,7 +186,7 @@ nameFlatFunction hsfunc fdata =
     -- Name the signals in all other functions
     Just flatfunc ->
       let s = sigs flatfunc in
-      let s' = map (\(id, (SignalInfo Nothing)) -> (id, SignalInfo (Just $ "sig_" ++ (show id)))) s in
+      let s' = map (\(id, (SignalInfo Nothing ty)) -> (id, SignalInfo (Just $ "sig_" ++ (show id)) ty)) s in
       let flatfunc' = flatfunc { sigs = s' } in
       fdata { flatFunc = Just flatfunc' }