-module CLasH.Utils.Pretty (prettyShow, pprString, pprStringDebug) where
-
--- Standard imports
-import qualified Data.Map as Map
-import Text.PrettyPrint.HughesPJClass
-
--- GHC API
-import qualified CoreSyn
-import Outputable ( showSDoc, showSDocDebug, ppr, Outputable, OutputableBndr)
-
--- VHDL Imports
-import qualified Language.VHDL.Ppr as Ppr
-import qualified Language.VHDL.AST as AST
-import qualified Language.VHDL.AST.Ppr
-
--- Local imports
-import CLasH.VHDL.VHDLTypes
-import CLasH.Utils.Core.CoreShow
-
--- | A version of the default pPrintList method, which uses a custom function
--- f instead of pPrint to print elements.
-printList :: (a -> Doc) -> [a] -> Doc
-printList f = brackets . fsep . punctuate comma . map f
-
-{-
-instance Pretty FuncData where
- pPrint (FuncData flatfunc entity arch) =
- text "Flattened: " $$ nest 15 (ppffunc flatfunc)
- $+$ text "Entity" $$ nest 15 (ppent entity)
- $+$ pparch arch
- where
- ppffunc (Just f) = pPrint f
- ppffunc Nothing = text "Nothing"
- ppent (Just e) = pPrint e
- ppent Nothing = text "Nothing"
- pparch Nothing = text "VHDL architecture not present"
- pparch (Just _) = text "VHDL architecture present"
--}
-
-instance Pretty Entity where
- pPrint (Entity id args res decl) =
- text "Entity: " $$ nest 10 (pPrint id)
- $+$ text "Args: " $$ nest 10 (pPrint args)
- $+$ text "Result: " $$ nest 10 (pPrint res)
- $+$ text "Declaration not shown"
-
-instance (OutputableBndr b, Show b) => Pretty (CoreSyn.Bind b) where
- pPrint (CoreSyn.NonRec b expr) =
- text "NonRec: " $$ nest 10 (prettyBind (b, expr))
- pPrint (CoreSyn.Rec binds) =
- text "Rec: " $$ nest 10 (vcat $ map (prettyBind) binds)
-
-instance (OutputableBndr b, Show b) => Pretty (CoreSyn.Expr b) where
- pPrint = text . show
-
-instance Pretty AST.VHDLId where
- pPrint id = Ppr.ppr id
-
-instance Pretty AST.VHDLName where
- pPrint name = Ppr.ppr name
-
-prettyBind :: (Show b, Show e) => (b, e) -> Doc
-prettyBind (b, expr) =
- text b' <> text " = " <> text expr'
- where
- b' = show b
- expr' = show expr
-
-instance (Pretty k, Pretty v) => Pretty (Map.Map k v) where
- pPrint =
- vcat . map ppentry . Map.toList
- where
- ppentry (k, v) =
- pPrint k <> text " : " $$ nest 15 (pPrint v)
-
--- Convenience method for turning an Outputable into a string
-pprString :: (Outputable x) => x -> String
-pprString = showSDoc . ppr
-
-pprStringDebug :: (Outputable x) => x -> String
-pprStringDebug = showSDocDebug . ppr