-- | File IO
module SSTG.Utils.FileIO
    ( writeState
    , readState
    , writePrettyState
    ) where

import SSTG.Core.Execution.Models
import SSTG.Core.Execution.Stepping
import SSTG.Utils.Printing

import Text.Read

writeState :: FilePath -> State -> IO ()
writeState file state = writeFile file (show state)

readState :: FilePath -> IO (Maybe State)
readState file = readFile file >>= \s -> return (readMaybe s :: Maybe State)

writePrettyState :: FilePath -> ([LiveState], [DeadState]) -> IO ()
writePrettyState file lds = writeFile file (pprLivesDeadsStr lds)