X-Git-Url: https://git.stderr.nl/gitweb?a=blobdiff_plain;f=FlattenTypes.hs;h=d0076636bdcd07e266215b74e92e875e4f547e17;hb=1c2b1b16627b1fb44b5764fce1692ec6120869ce;hp=c7e0c1e79e6eca5c771c455052b2860b467ca870;hpb=1e30fe04f4c285970ad2d5e23930dd935b4214fa;p=matthijs%2Fmaster-project%2Fc%CE%BBash.git diff --git a/FlattenTypes.hs b/FlattenTypes.hs index c7e0c1e..d007663 100644 --- a/FlattenTypes.hs +++ b/FlattenTypes.hs @@ -99,6 +99,8 @@ data SigDef = -- | An expression on signals data SignalExpr = EqLit SignalId String -- ^ Is the given signal equal to the given (VHDL) literal + | Literal String -- ^ A literal value + | Eq SignalId SignalId -- ^ A comparison between to signals deriving (Show, Eq) -- Returns the function used by the given SigDef, if any @@ -136,7 +138,8 @@ isInternalSigUse _ = False data SignalInfo = SignalInfo { sigName :: Maybe String, sigUse :: SigUse, - sigTy :: Type.Type + sigTy :: Type.Type, + nameHints :: [String] } -- | A flattened function @@ -181,10 +184,18 @@ genSignalId :: SigUse -> Type.Type -> FlattenState SignalId genSignalId use ty = do (defs, sigs, n) <- State.get -- Generate a new numbered but unnamed signal - let s = (n, SignalInfo Nothing use ty) + let s = (n, SignalInfo Nothing use ty []) State.put (defs, s:sigs, n+1) return n +-- | Add a name hint to the given signal +addNameHint :: SignalId -> String -> FlattenState () +addNameHint id hint = do + info <- getSignalInfo id + let hints = nameHints info + let hints' = (hint:hints) + setSignalInfo id (info {nameHints = hints'}) + -- | Returns the SignalInfo for the given signal. Errors if the signal is not -- known in the session. getSignalInfo :: SignalId -> FlattenState SignalInfo