defDst :: SignalId
} deriving (Show, Eq)
+-- | Is the given SigDef a FApp?
+is_FApp :: SigDef -> Bool
+is_FApp d = case d of
+ (FApp _ _ _) -> True
+ _ -> False
+
-- | An expression on signals
data SignalExpr =
EqLit SignalId String -- ^ Is the given signal equal to the given (VHDL) literal
return n
-- | Add a name hint to the given signal
-addNameHint :: SignalId -> String -> FlattenState ()
-addNameHint id hint = do
+addNameHint :: String -> SignalId -> FlattenState ()
+addNameHint hint id = do
info <- getSignalInfo id
let hints = nameHints info
- let hints' = (hint:hints)
- setSignalInfo id (info {nameHints = hints'})
+ if hint `elem` hints
+ then do
+ return ()
+ else do
+ 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.
(defs, sigs, n) <- State.get
let sigs' = map (\(id, info) -> (id, if id == id' then info' else info)) sigs
State.put (defs, sigs', n)
+
+-- vim: set ts=8 sw=2 sts=2 expandtab: