X-Git-Url: https://git.stderr.nl/gitweb?a=blobdiff_plain;f=c%CE%BBash%2FCLasH%2FTranslator%2FTranslatorTypes.hs;h=d8402567e14f16e27fdf547a7ab3d1a91a430286;hb=fc16bdb6576ef2c08d3675fdbf74fd61d5d25589;hp=2591e666f0b3491b93b8f8baaced8d993b77998d;hpb=466f80bdde9511508c38e951d208a2a52c90c7da;p=matthijs%2Fmaster-project%2Fc%CE%BBash.git diff --git "a/c\316\273ash/CLasH/Translator/TranslatorTypes.hs" "b/c\316\273ash/CLasH/Translator/TranslatorTypes.hs" index 2591e66..d840256 100644 --- "a/c\316\273ash/CLasH/Translator/TranslatorTypes.hs" +++ "b/c\316\273ash/CLasH/Translator/TranslatorTypes.hs" @@ -1,15 +1,15 @@ +{-# LANGUAGE TemplateHaskell #-} -- -- Simple module providing some types used by Translator. These are in a -- separate module to prevent circular dependencies in Pretty for example. -- -{-# LANGUAGE TemplateHaskell #-} module CLasH.Translator.TranslatorTypes where -- Standard modules import qualified Control.Monad.Trans.State as State import qualified Data.Map as Map import qualified Data.Accessor.Template -import Data.Accessor +import qualified Data.Accessor.Monad.Trans.State as MonadState -- GHC API import qualified GHC @@ -18,12 +18,11 @@ import qualified Type import qualified HscTypes import qualified UniqSupply --- ForSyDe +-- VHDL Imports import qualified Language.VHDL.AST as AST -- Local imports import CLasH.VHDL.VHDLTypes -import CLasH.Translator.Annotations -- | A specification of an entity we can generate VHDL for. Consists of the -- binder of the top level entity, an optional initial state and an optional @@ -80,7 +79,7 @@ data TypeState = TypeState { } -- Derive accessors -$( Data.Accessor.Template.deriveAccessors ''TypeState ) +Data.Accessor.Template.deriveAccessors ''TypeState -- Define a session type TypeSession = State.State TypeState @@ -97,7 +96,7 @@ data TranslatorState = TranslatorState { } -- Derive accessors -$( Data.Accessor.Template.deriveAccessors ''TranslatorState ) +Data.Accessor.Template.deriveAccessors ''TranslatorState type TranslatorSession = State.State TranslatorState @@ -109,23 +108,23 @@ type TranslatorSession = State.State TranslatorState -- module(s)? isTopLevelBinder :: CoreSyn.CoreBndr -> TranslatorSession Bool isTopLevelBinder bndr = do - bindings <- getA tsBindings + bindings <- MonadState.get tsBindings return $ Map.member bndr bindings -- Finds the value of a global binding, if available getGlobalBind :: CoreSyn.CoreBndr -> TranslatorSession (Maybe CoreSyn.CoreExpr) getGlobalBind bndr = do - bindings <- getA tsBindings + bindings <- MonadState.get tsBindings return $ Map.lookup bndr bindings -- Adds a new global binding with the given value addGlobalBind :: CoreSyn.CoreBndr -> CoreSyn.CoreExpr -> TranslatorSession () -addGlobalBind bndr expr = modA tsBindings (Map.insert bndr expr) +addGlobalBind bndr expr = MonadState.modify tsBindings (Map.insert bndr expr) -- Returns a list of all global binders getGlobalBinders :: TranslatorSession [CoreSyn.CoreBndr] getGlobalBinders = do - bindings <- getA tsBindings + bindings <- MonadState.get tsBindings return $ Map.keys bindings -- vim: set ts=8 sw=2 sts=2 expandtab: