X-Git-Url: https://git.stderr.nl/gitweb?a=blobdiff_plain;f=FlattenTypes.hs;h=49ca8c04533cbeab1616846c7ff1e5c1da2ac1bb;hb=1f0b33729534d451d7dcc46d4614d1a12b31ea82;hp=c5546eadb9043003981e2c0b1a8b363f8978a9ce;hpb=a07f47bf0b471c935e3e76e814b2f6ebfb298d35;p=matthijs%2Fmaster-project%2Fc%CE%BBash.git diff --git a/FlattenTypes.hs b/FlattenTypes.hs index c5546ea..49ca8c0 100644 --- a/FlattenTypes.hs +++ b/FlattenTypes.hs @@ -10,28 +10,8 @@ import HsValueMap -- | A signal identifier type UnnamedSignal = Int --- | A use of a signal -data SignalUse sigid = SignalUse { - sigUseId :: sigid -} deriving (Show, Eq) - --- | A def of a signal -data SignalDef sigid = SignalDef { - sigDefId :: sigid -} deriving (Show, Eq) - --- | A map of a Haskell value to signal uses -type SignalUseMap sigid = HsValueMap (SignalUse sigid) --- | A map of a Haskell value to signal defs -type SignalDefMap sigid = HsValueMap (SignalDef sigid) - --- | Translate a SignalUseMap to an equivalent SignalDefMap -useMapToDefMap :: SignalUseMap sigid -> SignalDefMap sigid -useMapToDefMap = fmap (\(SignalUse u) -> SignalDef u) - --- | Translate a SignalDefMap to an equivalent SignalUseMap -defMapToUseMap :: SignalDefMap sigid -> SignalUseMap sigid -defMapToUseMap = fmap (\(SignalDef u) -> SignalUse u) +-- | A map of a Haskell value to signal ids +type SignalMap sigid = HsValueMap sigid -- | How is a given (single) value in a function's type (ie, argument or -- return value) used? @@ -82,25 +62,30 @@ data HsFunction = HsFunction { -- | A flattened function application data FApp sigid = FApp { appFunc :: HsFunction, - appArgs :: [SignalUseMap sigid], - appRes :: SignalDefMap sigid + appArgs :: [SignalMap sigid], + appRes :: SignalMap sigid } deriving (Show, Eq) -- | A conditional signal definition data CondDef sigid = CondDef { - cond :: SignalUse sigid, - high :: SignalUse sigid, - low :: SignalUse sigid, - condRes :: SignalDef sigid + cond :: sigid, + high :: sigid, + low :: sigid, + condRes :: sigid } deriving (Show, Eq) +-- | Information on a signal definition +data Signal sigid = Signal { + id :: sigid +} deriving (Eq, Show) + -- | A flattened function data FlatFunction' sigid = FlatFunction { - args :: [SignalDefMap sigid], - res :: SignalUseMap sigid, - --sigs :: [SignalDef], + args :: [SignalMap sigid], + res :: SignalMap sigid, apps :: [FApp sigid], - conds :: [CondDef sigid] + conds :: [CondDef sigid], + sigs :: [Signal sigid] } deriving (Show, Eq) -- | A flat function that does not have its signals named @@ -110,11 +95,11 @@ type FlatFunction = FlatFunction' UnnamedSignal type BindMap = [( CoreBndr, -- ^ The bind name Either -- ^ The bind value which is either - (SignalUseMap UnnamedSignal) + (SignalMap UnnamedSignal) -- ^ a signal ( HsValueUse, -- ^ or a HighOrder function - [SignalUse UnnamedSignal] -- ^ With these signals already applied to it + [UnnamedSignal] -- ^ With these signals already applied to it ) )]