X-Git-Url: https://git.stderr.nl/gitweb?a=blobdiff_plain;f=FlattenTypes.hs;fp=FlattenTypes.hs;h=ce1f22dc00bbece034db0108d6ae6b6f52217cc0;hb=e2a1b9504807512be2e613c9e8822658be6fa626;hp=e7d21d605c5fec8901e9ad104cb4f92f8f3c3849;hpb=322d29e9564826fc9e7e3c743c38a0d5d353594e;p=matthijs%2Fmaster-project%2Fc%CE%BBash.git diff --git a/FlattenTypes.hs b/FlattenTypes.hs index e7d21d6..ce1f22d 100644 --- a/FlattenTypes.hs +++ b/FlattenTypes.hs @@ -1,5 +1,6 @@ module FlattenTypes where +import qualified Maybe import Data.Traversable import qualified Data.Foldable as Foldable import qualified Control.Monad.State as State @@ -88,10 +89,12 @@ data CondDef sigid = CondDef { -- | How is a given signal used in the resulting VHDL? data SigUse = - SigPort -- | Use as a port - | SigInternal -- | Use as an internal signal - | SigState -- | Use as an internal state - | SigSubState -- | Do not use, state variable is used in a subcircuit + 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 + | SigSubState -- | Do not use, state variable is used in a subcircuit -- | Information on a signal definition data SignalInfo = SignalInfo { @@ -109,6 +112,11 @@ data FlatFunction' sigid = FlatFunction { flat_sigs :: [(sigid, SignalInfo)] } +-- | Lookup a given signal id in a signal map, and return the associated +-- SignalInfo. Errors out if the signal was not found. +signalInfo :: Eq sigid => [(sigid, SignalInfo)] -> sigid -> SignalInfo +signalInfo sigs id = Maybe.fromJust $ lookup id sigs + -- | A flat function that does not have its signals named type FlatFunction = FlatFunction' UnnamedSignal