2 -- Simple module providing some types used by Translator. These are in a
3 -- separate module to prevent circular dependencies in Pretty for example.
5 {-# LANGUAGE TemplateHaskell #-}
6 module TranslatorTypes where
8 import qualified Control.Monad.Trans.State as State
9 import qualified Data.Map as Map
10 import qualified Data.Accessor.Template
13 import qualified HscTypes
15 import qualified ForSyDe.Backend.VHDL.AST as AST
22 -- | A map from a HsFunction identifier to various stuff we collect about a
23 -- function along the way.
24 type FlatFuncMap = Map.Map HsFunction FlatFunction
26 data TranslatorSession = TranslatorSession {
27 tsCoreModule_ :: HscTypes.CoreModule, -- ^ The current module
28 tsNameCount_ :: Int, -- ^ A counter that can be used to generate unique names
29 tsFlatFuncs_ :: FlatFuncMap -- ^ A map from HsFunction to FlatFunction
33 $( Data.Accessor.Template.deriveAccessors ''TranslatorSession )
35 type TranslatorState = State.State TranslatorSession
37 -- vim: set ts=8 sw=2 sts=2 expandtab: