yhccore-0.9: Yhc/Core/Serialise.hs
module Yhc.Core.Serialise(saveCore, loadCore) where
import Yhc.Core.Type
import Yhc.Core.Binary
import Yhc.Core.Internal.Binary
import System.IO
coreStr :: String
coreStr = "YHC-CORE"
coreVer :: Int
coreVer = 4
saveCore :: FilePath -> Core -> IO ()
saveCore file core = writeBinary file (coreStr,coreVer,core)
loadCore :: FilePath -> IO Core
loadCore file = do
hndl <- openBinaryFile file ReadMode
a <- get hndl
b <- get hndl
if a /= coreStr && b /= coreVer
then hClose hndl >> error ("Incompatible Core file, " ++ file)
else do c <- get hndl; hClose hndl; return c