Add a type alias StateId for state numbers.
authorMatthijs Kooijman <m.kooijman@student.utwente.nl>
Tue, 17 Feb 2009 16:50:05 +0000 (17:50 +0100)
committerMatthijs Kooijman <m.kooijman@student.utwente.nl>
Tue, 17 Feb 2009 16:50:05 +0000 (17:50 +0100)
Flatten.hs
FlattenTypes.hs
VHDL.hs

index 4194904c046ea211fbd83a6f0b7978f737415d80..1076d95ed4a3320fe3ad4bf82f7b83336320dcc0 100644 (file)
@@ -210,7 +210,7 @@ appToHsFunction ty f args =
 filterState ::
   SignalId                       -- | The signal id to look at
   -> HsValueUse                  -- | How is this signal used?
-  -> Maybe (Int, SignalId )      -- | The state num and signal id, if this
+  -> Maybe (StateId, SignalId )  -- | The state num and signal id, if this
                                  --   signal was used as state
 
 filterState id (State num) = 
@@ -222,7 +222,7 @@ filterState _ _ = Nothing
 stateList ::
   HsUseMap
   -> (SignalMap)
-  -> [(Int, SignalId)]
+  -> [(StateId, SignalId)]
 
 stateList uses signals =
     Maybe.catMaybes $ Foldable.toList $ zipValueMapsWith filterState signals uses
@@ -231,7 +231,7 @@ stateList uses signals =
 getOwnStates ::
   HsFunction                      -- | The function to look at
   -> FlatFunction                 -- | The function to look at
-  -> [(Int, SignalInfo, SignalInfo)]   
+  -> [(StateId, SignalInfo, SignalInfo)]   
         -- | The state signals. The first is the state number, the second the
         --   signal to assign the current state to, the last is the signal
         --   that holds the new state.
index fc778165b91e068cd095729bb5bb05f9e105e20a..409c2ac249970f3e1f12593bdfb7431977a40a67 100644 (file)
@@ -16,11 +16,14 @@ type SignalId = Int
 -- | A map of a Haskell value to signal ids
 type SignalMap = HsValueMap SignalId
 
+-- | A state identifier
+type StateId = Int
+
 -- | How is a given (single) value in a function's type (ie, argument or
 -- return value) used?
 data HsValueUse = 
   Port           -- ^ Use it as a port (input or output)
-  | State Int    -- ^ Use it as state (input or output). The int is used to
+  | State StateId -- ^ Use it as state (input or output). The int is used to
                  --   match input state to output state.
   | HighOrder {  -- ^ Use it as a high order function input
     hoName :: String,  -- ^ Which function is passed in?
@@ -92,8 +95,8 @@ data SigUse =
   SigPortIn          -- | Use as an input port
   | SigPortOut       -- | Use as an input port
   | SigInternal      -- | Use as an internal signal
-  | SigStateOld Int  -- | Use as the current internal state
-  | SigStateNew Int  -- | Use as the new internal state
+  | SigStateOld StateId  -- | Use as the current internal state
+  | SigStateNew StateId  -- | Use as the new internal state
   | SigSubState      -- | Do not use, state variable is used in a subcircuit
 
 -- | Is this a port signal use?
diff --git a/VHDL.hs b/VHDL.hs
index 32279fdea471a0c055a50ccb39cd6bd8491fd9de..67b8394301724c8c66317c4c08d82d7526a50b85 100644 (file)
--- a/VHDL.hs
+++ b/VHDL.hs
@@ -144,7 +144,7 @@ createArchitecture hsfunc fdata =
       let arch = AST.ArchBody (mkVHDLId "structural") (AST.NSimple entity_id) (map AST.BDISD sig_decs) (insts' ++ procs')
       setArchitecture hsfunc arch
 
-mkStateProcSm :: (Int, SignalInfo, SignalInfo) -> AST.ProcSm
+mkStateProcSm :: (StateId, SignalInfo, SignalInfo) -> AST.ProcSm
 mkStateProcSm (num, old, new) =
   AST.ProcSm label [clk] [statement]
   where