flattenFunction _ (Rec _) = error "Recursive binders not supported"
flattenFunction hsfunc bind@(NonRec var expr) =
- FlatFunction args res apps conds
+ FlatFunction args res apps conds []
where
init_state = ([], [], 0)
(fres, end_state) = State.runState (flattenExpr [] expr) init_state
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 :: [SignalMap sigid],
res :: SignalMap sigid,
- --sigs :: [Signal],
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
pPrint (HighOrder _ _) = text "Higher Order"
instance Pretty id => Pretty (FlatFunction' id) where
- pPrint (FlatFunction args res apps conds) =
+ pPrint (FlatFunction args res apps conds sigs) =
(text "Args: ") $$ nest 10 (pPrint args)
$+$ (text "Result: ") $$ nest 10 (pPrint res)
$+$ (text "Apps: ") $$ nest 10 (vcat (map pPrint apps))
$+$ (text "Conds: ") $$ nest 10 (pPrint conds)
+ $+$ text "Signals: " $$ nest 10 (pPrint sigs)
instance Pretty id => Pretty (FApp id) where
pPrint (FApp func args res) =
instance Pretty id => Pretty (CondDef id) where
pPrint _ = text "TODO"
+instance Pretty id => Pretty (Signal id) where
+ pPrint (Signal id) = pPrint id
+
instance Pretty VHDLSession where
pPrint (VHDLSession mod nameCount funcs) =
text "Module: " $$ nest 15 (text modname)