X-Git-Url: https://git.stderr.nl/gitweb?a=blobdiff_plain;f=FlattenTypes.hs;h=eba0599e271ce1245c5bf5549814a866d9d9be54;hb=221d523e2cd3de079ea642a65f31950caf94152b;hp=d0076636bdcd07e266215b74e92e875e4f547e17;hpb=ee2454dbeb8d41d615726593acd8600c4a3253ae;p=matthijs%2Fmaster-project%2Fc%CE%BBash.git diff --git a/FlattenTypes.hs b/FlattenTypes.hs index d007663..eba0599 100644 --- a/FlattenTypes.hs +++ b/FlattenTypes.hs @@ -96,6 +96,12 @@ data SigDef = 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 @@ -189,12 +195,16 @@ genSignalId use ty = do 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. @@ -208,3 +218,5 @@ 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) + +-- vim: set ts=8 sw=2 sts=2 expandtab: