-----------------------------------------------------------------------------
-- |
-- Module      :  Language.VHDL.FileIO
-- Copyright   :  (c) SAM Group, KTH/ICT/ECS 2007-2008
-- License     :  BSD-style (see the file LICENSE)
-- 
-- Maintainer  :  forsyde-dev@ict.kth.se
-- Stability   :  experimental
-- Portability :  portable
--
-- Functions working with files in the VHDL backend. 
--
-----------------------------------------------------------------------------
module Language.VHDL.FileIO (writeDesignFile) where

import Language.VHDL.AST
import Language.VHDL.AST.Ppr() -- instances
import qualified Language.VHDL.Ppr as Ppr (ppr)

import System.IO
import Text.PrettyPrint.HughesPJ

-- | Write a design file to a file in disk
writeDesignFile :: DesignFile -> FilePath -> IO ()
writeDesignFile df fp = do
  handle     <- openFile fp WriteMode
  hPutStrLn handle "-- Automatically generated VHDL"
  hPutStr handle $ (renderStyle mystyle . Ppr.ppr) df
  hClose handle
 where mystyle = style{lineLength=80, ribbonsPerLine=1}